所有文本框和textarea上的.change()

时间:2012-03-22 13:17:07

标签: jquery

$(':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个文本时,会触发此函数。

但是我想在所有文本框和文本区域都不为空时触发此函数。

2 个答案:

答案 0 :(得分: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 :(得分:-1)

您需要遍历inputstextareas以确保每个都不为空

$('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");
  }
});

感谢-1错过了==(我猜是因为它完全接受了接受的答案。)