Javascript - 检查序列化表单是否为空

时间:2017-01-27 11:00:16

标签: javascript jquery html

我正在尝试检查表单输入是否全部为空。当任何输入具有值(返回true)时它可以正常工作,但当输入再次变为空时不返回false。

var data;

$('form :input').on('input', function() {
    data = $('form').serialize();
    console.log(data.indexOf('=&') > -1)
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form>
  <input type="text" name="in-1" />
  <input type="text" name="in-2" />
  <input type="text" name="in-3" />
  <input type="text" name="in-4" />
  <input type="text" name="in-5" />
  <input type="text" name="in-6" />
  <input type="text" name="in-7" />
  <input type="text" name="in-8" />
</form>

3 个答案:

答案 0 :(得分:2)

(data.indexOf('=&') > -1
至少有一个字段为空时,

将返回true - 您正在检查是否存在=&amp;,并且只要一个字段为空,该字符串就会存在。但是,依赖于数据的序列化版本无论如何都是哎呀。更好的是直接检查输入:

$('form :input').on('input', function() {
  var allBlank = true; //assume they're all blank until we discover otherwise
  //loop through each of the inputs matched
  $('form :input').each(function(index, el)
  {
    if ($(el).val().length != 0) allBlank = false; //they're not all blank anymore
  });
  console.log(allBlank);
});

答案 1 :(得分:1)

@

使用var serialized = $(form).serialize(); if(serialized.indexOf('=&') > -1 || serialized.substr(serialized.length - 1) == '='){ //you've got empty values } ,您可以在序列化之前对其进行测试:

jQuery

答案 2 :(得分:0)

data.split('&').every(e => { return e.indexOf('=') === (e.length - 1); })