1

jquery を使用して、動的に作成されたフォームフィールドでフォームをチェックし、送信前にすべての入力フィールドが入力されていることを確認しようとしています。すべてのフィールドが入力されるまで、送信リンクを非表示にしたいと思います。これは私がこれまでに持っているものです。

$( 'form#form_id' ).change(function(e) {
 $(":input").each(function() {
    if($(this).val() === ""){
        $("#showlink").hide();
      }else{
        $("#showlink").show();
      }
    });
});
<div id="showlink">
        <a href="#" id="submitBtnId" onclick="addDuctClickHandler();" data-icon="check" data-role="button" data-inline="true" data-theme="b">Submit Final Test</a>
</div>

ここで何か不足していますか?

4

5 に答える 5

3

あなたはすべてのフィールドを(each関数で)調べています。値が空の場合は、リンクを非表示にしますが、他のフィールドを引き続き実行します。値が空の場合は、「break」ステートメントを配置して、それ以上の処理を停止する必要があります。すべてのフィールドを調べて、ブール値のパラメーターを維持する方が良いでしょう。ループの後、ブール値パラメーターに応じてリンクを表示または非表示にします。

このような:

$('#showlink').hide(); // Assume form is incomplete

$( 'form#form_id' ).change(function(e) {
 var complete = true; // Set start of boolean expression

 $(":input").each(function() {
    complete = complete && $(this).val() !== ""; //If val is empty, the whole expression  after the iteration will evaluate to false
 });

 if(complete) {
   $("#showlink").show();
 }
});
于 2013-08-24T22:10:27.987 に答える
0

@asymptoticFault の回答に加えて、他のバリアント - リンクを非表示にするかどうかを変数を使用して保存します。

$('form#form_id' ).change(function(e) {
  var should_hide = false;
  $(":input").each(function() {
    if($(this).val() === ""){
      should_hide = true;
      return false; // do not process each any more
    }
  });
  if (should_hide) {
    $("#showlink").hide();
  } else {
    $("#showlink").show();
  }
});
于 2013-08-24T22:33:17.603 に答える
0
if($(this).val().indexOf(""))

また

if($(this).val.indexOf(""))

indexOfユーザーが何かを入力したかどうかを確認するために使用してみてください

于 2013-08-24T22:09:20.297 に答える