jquery字段的表单空白检查

时间:2013-03-23 16:11:33

标签: javascript jquery forms

我正在构建一个函数,该函数将检查表单的某些字段是否为空。然后,只有在没有空字段时才使用此函数提交表单。

我测试字段空白的功能:

    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选项)。

任何线索?

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;
};