Javascript禁用按钮

时间:2011-08-22 18:51:31

标签: javascript jquery html css dojo

我想知道是否有人可以帮我解决这个问题。

我有一个按钮定义为:

<input type="button" id="myButton" name="myButton" value="ClickMe!!" onClick="callMe()"/>

我可以使用jQuery,标准javascript或Dojo来禁用带有onClick事件的按钮:

$('#myButton').attr('disabled', 'disabled');

我面临的问题是,即使此代码禁用了该按钮,如果单击该按钮,onClick事件仍会触发函数callMe()

如何禁用按钮不调用onClick功能?

8 个答案:

答案 0 :(得分:4)

使用jQuery,您可以绑定一个函数来检查您的按钮是否被禁用:

$('#myButton').click(function() {
  if (!$(this).is(':disabled')) {
    callMe();
  }
});

答案 1 :(得分:1)

由于您使用的是jQuery,请使用

$('#myButton').click(function() { callMe(); this.unbind(); });

而不是onClick。

答案 2 :(得分:0)

$('#myButton').click(function(){
    if( !$(this).is('[disabled=disabled]') ){
       ...
    }
});

答案 3 :(得分:0)

在禁用它的相同代码中,只需删除onclick事件处理程序。

答案 4 :(得分:0)

你应该使用jQuery来附加点击处理程序,而不是将它们添加到内联*

只需在点击功能中添加支票

即可
$('#myButton').click(function(){
  var $this;
  $this = $(this);
  if ( $this.is(':disabled') ) return;
  callMe();
});

可替换地,

$('#myButton').click(callMe);

callMe()
{
  var $this;
  $this = $(this);
  if ($this.is(':disabled')) return;
  ...the rest of your code...
}

或者如果你坚持使用它内联:

onclick="if ($(this).is(':disabled')) return; callMe();"

*我regularly rant about how HTML, CSS & JS符合MVC的定义

答案 5 :(得分:0)

而不是使用onclick属性,绑定到事件

$('#myButton').click(function(e){
    // try it without this
    if($(this).attr('disabled'))
        return false;
    callMe();
    e.preventDefault();
});

不经检查就试试,不确定是否有必要。

答案 6 :(得分:0)

这是一种做法。

$('#myButton').click(function(){
  if(!$(this).hasClass("disabled")){
     //Do stuff here
  }
});

要禁用按钮,只需将禁用的类添加到其中。

$('#myButton').addClass("disabled");

在已禁用的类中添加适当的样式以使按钮看起来像已禁用,或者您也可以设置disabled属性以及设置类。

答案 7 :(得分:0)

而不是......

$('#myButton').attr('disabled', 'disabled');

...使用......

$('#myButton')
   .prop('disabled', 'disabled')  // Sets 'disabled' property
   .prop('onclick', null)         // Removes 'onclick' property if found
   .off('click');                 // Removes other events if found