我正在尝试编写一个简单的输入字段验证插件(更多的是学习练习)并认为这不会太难,因为我应该做的就是:
但我似乎没有写一些东西来检查我的数组中的空字符串(读取:内部没有文本的输入)。
这是我到目前为止的代码:
var form = $(this), // passed in form element
inputs = form.find('input'), // all of this forms input fields
isValid = false; // initially set the form to not be valid
function validate() {
var fields = inputs.serializeArray(); // make an array out of input fields
// start -- this does not work
for (var n in fields) {
if (fields[n].value == "") {
isValid = false;
console.log('failed');
} else {
isValid = true;
console.log('passed');
};
}
// end -- this does not work
}; // close validate()
// TRIGGERS
inputs.live('keyup blur', function(event) {
validate();
});
如何帮助我检查其中一个字段是否为空,如果是,则返回isValid = false
将非常感谢。
我也玩$.inArray("", fields)
,但即使console.log
显示字段没有值,也不会返回0或1。
感谢阅读。
答案 0 :(得分:4)
如果第一个字段为空,而第二个字段为空,则会以这种方式覆盖isValid
变量。获得第一个空变量后,您可以break;
for循环。
答案 1 :(得分:4)
如果您正在寻找更多jQuery样式的语法,可以使用以下命令替换for循环:
var isValid = true; // default to valid
$.each(fields, function(i, field){
if(field.value == '') {
console.log('failed');
isValid = false;
} else {
console.log('passed');
}
});
答案 2 :(得分:0)
您可以使用更简单的检查来替换整个validate
函数:
function validate() {
var blankInputs = inputs.filter(function() {
return this.value === '';
});
isValid = blankInputs.length === 0; // If there are none, the form is valid
} // close validate()
请注意使用严格相等运算符===
。优良作法是几乎总是使用它而不是==
,但对于有效的值(当你说if (value)
时评估为false)尤其如此。在这些情况下,==
会给你一些非常意外的行为。