2012-03-22 60 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個textarea元素中輸入1個文本時,觸發該函數。.change()

但我希望此功能在所有文本框和文本區域都不爲空時被觸發。

回答

1

你最好在你的元素中添加一個類來標識它們。加上它會使代碼更語義:

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

然後在你的代碼,你可以將你的活動,並檢查是否所有的三個元素有一個值集:

$('.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 2012-03-22 13:28:46

+0

@Matt你說得對,更新了代碼和小提琴。 – 2012-03-22 13:33:19

-1

你需要通過inputstextareas迭代,以確保每一個不爲空爲-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"); 
    } 
}); 

感謝究竟是幹什麼的被接受的答案的確如此。)

+0

'each()'中的'return false;'並不妨礙對$(「:submit」)執行的操作。 – Matt 2012-03-22 13:29:01

+0

真的嗎?那麼我猜想我不知道要去那裏。我想,將它製作成國旗可能會更好。 – sparrow 2012-03-22 13:33:20