当某些文本字段具有值

时间:2016-08-25 13:26:29

标签: javascript jquery forms

我有一个包含多个文本字段的表单,我希望在填写必填字段时启用添加按钮。默认情况下,HTML中的按钮处于禁用状态。在Firebug中,似乎模糊函数会触发,但if语句未达到。

$(".cd-form :input").blur(function(){

    var ok=true;
    $("#signup-firstnmame,#signup-surname","#signup-Address1","#signup-City","#signup-Postcode","#signup-Email","#signup-Mobile").each(function(){
       /* if ($(this).val()==="")*/


        if ($('#signup-firstnmame').val() !== "" && $('#signup-surname').val() !== "" && $('#signup-Address1').val() !== "" && $('#signup-City').val() !== "" && $('#signup-Postcode').val() !== "" && $('#signup-Email').val() !== "" && $('#signup-Mobile').val() !== "") 
       $("#AddData").prop("disabled",false);

            else
       $("#AddData").prop("disabled",true);
    });

});

2 个答案:

答案 0 :(得分:1)

逗号应该是选择器的一部分,而不是单独的参数。

$('#signup-firstname, #signup-surname, #signup-Address1, ...

另外,如果您正在检查所有字段(如if语句中),则不需要为每个字段执行一次,只需执行一次。

如果您考虑在相关字段中添加一个类,您的函数将更具可读性,即:

$('#AddData').prop('disabled', $('.required-field[val=""]').length > 0);

答案 1 :(得分:0)

首先,我认为将一个独特的类添加到您关心的输入中会很聪明。这样你就可以按照以下方式做点什么:

$('.yourClass').on('input', function() {
  var x = true;
  $('.yourClass').each(function() {
    this = $(this); //cast it to jQuery obj (ez ref)
    if (this.val() == "")
            x = false;
  } );
} );

基本上,每当有人在字段中输入内容时,jQuery将遍历您的输入,检查值并将x添加1。如果x等于您正在检查的元素数,则它将启用该按钮。

这不是最优雅的解决方案,但是当我匆忙完成一个项目时,我是如何解决你所遇到的那个问题。

使用@JaredT提到的关于布尔值的内容修改了我的答案,更加优雅。我相信这可以进一步改善,希望这会让球滚滚而来。