2016-08-25 32 views
0

我有一個包含多個文本字段的表單,我希望在填寫必填字段時啓用添加按鈕。默認情況下,該按鈕在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); 
    }); 

}); 
+0

選擇器是否與您的HTML匹配?我在其中看到了幾個拼寫錯誤和大小寫不一致的情況。請發佈HTML輸入。 – jalynn2

+0

我很確定if語句正在被擊中。但是一個console.log到if和else以及console.log中的每個輸入的值。另外,如果你不打算使用$(this),則不需要使用它們。你可以刪除完全相信的if,或者用$(this)而不是臃腫的if語句檢查值。 – Goose

+0

不是所有的選擇器都應該放在單個字符串中嗎? – jalynn2

回答

1

逗號應該是選擇器的一部分,而不是單獨的參數。

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

另外,如果你正在檢查所有的字段,如在你的if語句,你並不需要爲每個字段做,有一次,它會足夠做一次。

,如果您考慮增加一個類的相關領域,你的功能會更可讀,即:

$('#AddData').prop('disabled', $('.required-field[val=""]').length > 0); 
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將通過您的輸入檢查值,並增加1到x迭代。如果x等於你正在檢查的元素的數量,那麼它將啓用該按鈕。

這不是最優雅的解決方案,但我是如何解決您在完成項目時遇到的同一問題的。

用@JaredT提到的有關布爾值的更好的答案修改了我的答案。我相信這可能會進一步改善,但希望這可以讓球滾動。

相關問題