我正在尝试检查表单输入是否全部为空。当任何输入具有值(返回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>
答案 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); })