我正在构建一个函数,该函数将检查表单的某些字段是否为空。然后,只有在没有空字段时才使用此函数提交表单。
我测试字段空白的功能:
function formCompleted(form){
form.filter(':input').each( function(){
if( $(this).val() === "" ){
return false;
};
});
};
提交表格的功能:
$('#form-id').change(function(){
if(formCompleted($('#form-id > *'))){
alert("Form haven't empty fields");
}else{
alert('Form have empty fields');
}
});
问题
formCompleted函数似乎总是false,即使填充了所有字段也是如此。表单包含输入(type =" number")和select(带3选项)。
任何线索?
答案 0 :(得分:1)
使用attribute selector,如果空字段数为0,则返回true,表示没有空字段。
function formCompleted(form){
return form.filter(':input[value=""]').length == 0;
};
答案 1 :(得分:0)
试试这个:
function formCompleted(form){
form.filter(':input').each( function(){
if( $(this).val() === "" ){
return false;
};
});
form.filter('select').each( function(){
if( $(this).val() === "" ){
return false;
};
});
};
$('#form-id').change(function(){
if(formCompleted($('#form-id'))){ // <----pass the form only
alert('Form haven't empty fields');
}else{
alert('Form have empty fields');
}
});
答案 2 :(得分:0)
您忘记从formCompleted()
返回true,因此它将返回false或nothing(未定义)。
所以在循环之后添加一个return true;
语句,如果没有空元素,则返回true。
function formCompleted(form){
form.filter(':input').each( function(){
if( $(this).val() === "" ){
return false;
};
});
return true;
};