0

フォームの一部のフィールドが空かどうかをチェックする関数を作成しています。次に、空のフィールドがない場合にのみ、この関数を使用してフォームを送信します。

フィールドの空をテストする私の関数:

    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") と選択 (3 オプション) が含まれます。

手がかりはありますか?

4

3 に答える 3

1

属性セレクターを使用し、空のフィールド数が0の場合、つまり空のフィールドがない場合はtrueを返します。

function formCompleted(form){
    return form.filter(':input[value=""]').length == 0;
};
于 2013-03-23T16:13:57.140 に答える
0

から true を返すのを忘れているformCompleted()ため、false または何も返さない (未定義) ことになります。

したがって、ループの後にステートメントを追加してreturn true;、空の要素がない場合は true を返します。

function formCompleted(form){
    form.filter(':input').each( function(){
        if( $(this).val() === "" ){
          return false;
        };
    });
    return true;
};
于 2013-03-24T13:41:39.237 に答える
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');
  }
});
于 2013-03-23T16:18:43.020 に答える