removeAttr()问题

时间:2011-09-19 18:40:47

标签: javascript jquery

举手 - 我无法弄清楚它有什么问题。这是一个错误还是一个错误的代码?

    $(document).ready(function() {
    $("#rem_but").click(function(){

    var mail_name = $("#mail_rem").val();
    var dataString = 'mail_name='+ mail_name;


    if (mail_name.val() == "") {  $("#rem_but").attr("disabled",true); } 
    else {  $("#rem_but").removeAttr("disabled"); };
}); });

因此,当没有输入时,按钮会正确返回false - 当字段中有输入时 - 仍然按钮返回false,因此removeAttr()不起作用 - 为什么?问候。

3 个答案:

答案 0 :(得分:5)

尝试(mail_name.val() == "")更改为(mail_name == "")

答案 1 :(得分:3)

您使用的是jQuery 1.6.x吗?

如果是,那么您应该尝试使用.prop()功能。见下文:

Disable/enable an input with jQuery?

此外,在您的if语句中,无需继续选择$("#rem_but")。根据您的代码,我建议改为$(this) -

$(this).prop('disabled', true);

这应该有效 -

$(document).ready(function() {
 $("#rem_but").click(function(e) {

 e.preventDefault();

 var mail_name = $.trim($("#mail_rem").val());
 var dataString = 'mail_name='+ mail_name;

 if (mail_name === "") {  
    $(this).prop("disabled", true); }
 else {  
    $(this).prop("disabled", false); }
 });
});

这是工作的jsFiddle代码 -

http://jsfiddle.net/4rPc5/

更新代码 -

http://jsfiddle.net/4rPc5/2/

答案 2 :(得分:0)

也许你需要将disabled属性设置为'false'?

if (mail_name.val() == "") {  $("#rem_but").attr("disabled",true); } 
else {  $("#rem_but").attr("disabled",false); };
}

或者将其设置为空字符串

if (mail_name.val() == "") {  $("#rem_but").attr("disabled",true); } 
else {  $("#rem_but").attr("disabled",""); };
}