2012-03-22 5 views
0
$(':input[type=text], textarea').change(function(){ 
    if(($(":input[type=text]").val()!="") && $("textarea").val()!=""){ 
     $(":submit").removeAttr("disabled"); 
     $(":submit").removeClass("disabled"); 
     $(":submit").addClass("success"); 
    } 
}); 

この関数は、フォームの2つのテキストエリアのうち1つにテキストを入力したときにトリガーされます。。すべてのテキストボックスとテキストエリアでの.change()

しかし、すべてのテキストボックスとテキストエリアがnullになってからこの関数を起動します。

答えて

1

あなたの要素にクラスを追加して識別することをお勧めします。それに加えて、コードをよりセマンティックになるだろう:

<input type="text" name="Texbox1" class="elementGroup" /> 
<textarea name="Textarea1" class="elementGroup"></textarea> 
<textarea name="Textarea2" class="elementGroup"></textarea> 

次に、あなたのコードの中で、あなたのイベントを添付して、すべての3つの要素が値が設定されているかどうかを確認することができます:

$('.elementGroup').change(function() { 
    var valid = true; 
    $('.elementGroup').each(function() { 
     if ($(this).val() == "") 
      valid = false; 
    }); 

    if (valid) 
     $(":submit").removeAttr("disabled").toggleClass("disabled success"); 
}); 

Example fiddle

+1

'each()'の 'return false;'は '$(":submit ")'の実行を妨げていません.. – Matt

+0

@Mattあなたは正しいです、更新されたコードとフィドルが追加されました。 –

-1

あなたはそれが正確に何をしているので(私は推測している==を逃すためのための-1、それぞれが空でないことを確認してください

$('input[type=text], textarea').change(function(){ 
    x=0; 
    $('input[type=text], textarea').each(function(){ 
    if($(this).val()==''){x=1;} 
    }); 
    if(x==0){ 
    $(":submit").removeAttr("disabled"); 
    $(":submit").removeClass("disabled"); 
    $(":submit").addClass("success"); 
    } 
}); 

感謝を作るためにinputstextareasを反復処理する必要があります受け入れられた答えがあります。)

+0

'each()'の 'return false;'は '$(":submit ")'のアクションが実行されることを妨げていません。 – Matt

+0

本当ですか?それから私はそこに行くことについて私が知らない何かがあると思う。それをフラグにすることはおそらくもっとうまくいくでしょう。 – sparrow

関連する問題