如何不在 HTML 表单中传递空输入字段

jas*_*dak 4 html javascript forms filter

我有一个表单,其中包含我们公司每个产品的大约一百个输入/文本字段。该表格将在一天结束时填写,其中包含已售出的每种产品的数量。

我如何让表单只传递相对较小的非空字段子集?

我不是在寻找表单验证。用户可以在任何输入字段中输入或不输入值;但是,我只希望将输入了值的输入字段包含在表单传递的 POST 中。

谢谢

Rob*_*obG 5

一种方法是在提交之前将所有空字段设置为禁用,例如

function disableEmptyInputs(form) {
  var controls = form.elements;
  for (var i=0, iLen=controls.length; i<iLen; i++) {
    controls[i].disabled = controls[i].value == '';
  }
}
Run Code Online (Sandbox Code Playgroud)

并在表单的提交侦听器上运行它:

<form onsubmit="disableEmptyInputs(this)" ...>
Run Code Online (Sandbox Code Playgroud)

因此,任何值为 ""(空字符串)的输入都将其disabled属性设置为true并且不会被提交。

或者动态添加监听器:

window.onload = function() {
  document.getElementById('formID').addEventListener('submit', function() {
    Array.prototype.forEach.call(this.elements, function(el) {
      el.disabled = el.value == '';
    });
  }, false);
};
Run Code Online (Sandbox Code Playgroud)