2012-12-28 164 views
0

我有這樣的代碼:禁止輸入型提交

setInterval(function(){ 
    if($("#username_error").val() == "" && $("#password_error").val() == "" && $("#email_error").val() == ""){ 
    $('input[type="submit"]').removeAttr('disabled'); 
    } else { 
    $('input[type="submit"]').attr('disabled','disabled'); 
    } 
}, 10); 

我需要禁用提交按鈕,如果沒有錯誤三個div的。當我運行這個代碼時,沒有任何反應。但是如果我執行alert()這個if語句正確運行。我在這裏做錯了什麼?

+2

有跡象表明,你可以聽,而不是使用'setOverkill'許多事件。 – undefined

+0

通過id嘗試輸入[type =「submit」]並將setInterval替換爲其他自定義函數 –

+0

對於這種類型的東西,可以有不同於setInterval的方法。只是一個建議 –

回答

1

不喜歡它:

$('input[type="submit"]').attr('disabled','disabled');  

$('input[type="text"]').change(function(){ 
    if($("#username_error").val() == "" && $("#password_error").val() == "" && $("#email_error").val() == "") { 
     $('input[type="submit"]').removeAttr('disabled'); 
    } else { 
     $('input[type="submit"]').attr('disabled','disabled'); 
    } 
}); 

DEMO

+0

如果錯誤值爲空,這意味着沒有錯誤....並且你正在使其禁用...這是沒有意義 – bipen

+0

@bipen我只是給了他如何做到這一點的想法。我不考慮這些價值是什麼。它可能是文本字段或其他東西。 –

+0

什麼都沒有發生:( –

0

使用jQuery keyup事件。

$('input').keyup(function(){ 
     if($("#username_error").val() == "" && $("#password_error").val() == "" && $("#email_error").val() == "") { 
     $('input[type="submit"]').attr('disabled',true); 
     } else { 
     $('input[type="submit"]').attr('disabled', false); 
     } 
    }); 
0

另一種解決方案...

$(document).ready(function() { 
    $('button').attr("disabled", true); // starts disabling the button 
    $('input').on("blur", null, function() { 
     if ($("#username_error").val() != "" && $("#password_error").val() != "" && $("#email_error").val() != "") { 
      $("#botao").attr("disabled", false); 
     } else { 
      $("#botao").attr("disabled", true); 
     } 
    }); 
}); 
+0

如果「#username_error」,「#password_error」和「#email_error」是三個div。用「html()」替換「val()」 –