【问题标题】:removeAttr() issueremoveAttr() 问题
【发布时间】:2011-09-20 03:16:48
【问题描述】:

举起手来 - 我不知道它有什么问题。这是一个错误还是错误的代码?

    $(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() 不起作用 - 为什么?问候。

【问题讨论】:

  • 您应该在控制台中收到 JavaScript 错误。
  • rem_but 不是提交按钮,对吧?而它只是一个普通的按钮?
  • @Kris - 是的,它是一个“按钮”类型...

标签: javascript jquery


【解决方案1】:

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

【讨论】:

  • 另外,如果您使用 jQuery 版本 1.6+,请使用 prop("disabled") 而不是 attr("disabled")blog.jquery.com/2011/05/12/jquery-1-6-1-released
  • 还有一件事:如果你的按钮被禁用,点击将不起作用
  • 你总是可以有另一个元素来启用它:)
  • 我一直在尝试像这样使用 prop():$('#rem_but').prop('disabled',false) - 仍然不起作用...
  • @simoncereska 嗨 - 那么你有什么建议呢?
【解决方案2】:

您使用的是 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/

【讨论】:

  • 升级?我无法为您回答这个问题,因为我不了解其中的含义或您的申请。
  • 这是新应用还是小应用?那我会回答是的。你有单元测试要仔细检查吗?
  • 这是一个小的弹出窗口,其中有一个用于输入邮件地址的字段(重置它)一个非常简单的代码...当该字段为空时,按钮工作正常返回 false,否则 - 按钮仍然返回 false 并且 removeAtrr() 或 prop() 由于某种原因不起作用...(我不确定我是否正确使用了 prop() 方法 - 我现在使用的是 1.6.4 版本)
  • 我刚刚更新了示例代码以包含另一个按钮来启用第一个按钮。它还使用 keyup() 事件,因此您不需要额外的按钮。
  • 非常感谢 - 我看到了代码。有效,但这是一种解决方法吗?我只需要一个简单的按钮,当字段中有任何东西时提交(启用),而当没有任何东西时,simpy 不会提交(启用)......对我来说这看起来像一个错误......(我不想实现 3 个按钮 - 虽然我当然感谢您的解决方案!)
【解决方案3】:

也许您需要将 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",""); };
}

【讨论】:

  • 嗨..我也一直在尝试这样做-无济于事...现在我升级到 1.6.4...所以我认为您不能使用 attr() ..P.S.你的方法在之前的版本中不行,我试过了..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-25
  • 1970-01-01
  • 1970-01-01
  • 2015-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多