0

最後の入力をチェックするときにdivid="FormStep"を非表示にする必要があります。

私のページでは、次のHTMLコードを使用しています。

<div id="FormStep">
  <input type="text" name="test1" id="test1" class="validate" />
  <div id="Checktest1Input"></div>
  <input type="text" name="test2" id="test2" class="validate" />
  <div id="Checktest2Input"></div>
  <input type="text" name="test3" id="test3" class="validate" />
  <div id="Checktest3Input"></div>
<input type="button" id="Step" value="Send"/>
</div>

ページでの検証には、次のJSコードを使用します。

$('#Step').on('click',function(){
    $('.validate').each(function(){

        if ($(this).val().length == 0){
        $('#Check'+this.id+'Input').html('false');
          return false;
        } else {
        $('#Check'+this.id+'Input').html('true');
        }

      });
});

最後の入力を確認した後に$('#Step').hide();このコードが実行するコードを追加する方法を教えてください。$('#Step').hide();

4

4 に答える 4

2

次を使用すると、コードを大幅に簡略化できます。

$('#Step').on('click',function(){
    var valid = true;
    $('.validate').each(function(){
        valid = valid && $(this).val().length != 0;
        $(this).next().html("" + ($(this).val().length != 0)); 
    });
    if(valid){
        $(this).hide();
    }
    return valid;
});
于 2013-01-07T03:59:09.893 に答える
1

ワーキングフィドル

$('#Step').on('click',function(){
    var hideStep = true;
    $('.validate').each(function(){

        if ($(this).val().length == 0){
        $('#Check'+this.id+'Input').html('false');
          hideStep = false;
          return false;
        } else {
        $('#Check'+this.id+'Input').html('true');
        }
      });
    if (hideStep)
      $('#Step').hide();
});
于 2013-01-07T04:03:19.183 に答える
0

変数を使用して$('#Step')。hide();を設定します。各関数の後:

$('#Step').on('click',function(){
    var error = false;
    $('.validate').each(function(){
        if ($(this).val().length == 0){
          $('#Check'+this.id+'Input').html('false');
          error = false;
        } else {
          $('#Check'+this.id+'Input').html('true');
          error = true;
        }
      });
    if(!error) { 
      $('#Step').hide();
    }
});

.eachは同期的です。つまり、.each関数の下にあるものはすべて、実行後にロードされます。

于 2013-01-07T03:59:15.883 に答える
0

あなたが探しているのは、無効な入力がある場合にアクションを非表示にすることだと思います

$('#Step').on('click',function(){
    var valid = true;
    $('.validate').each(function(){
        if ($(this).val().length == 0){
            $('#Check'+this.id+'Input').html('false');
          valid = false;
        } else {
            $('#Check'+this.id+'Input').html('true');
        }
      });
    if(!valid){
        $('#Step').hide();
    }
});
于 2013-01-07T03:59:34.150 に答える