已禁用按钮仍会侦听单击事件
我在一个表格中遇到问题,我会进行一些jqueryvalidation。 如果未填写特定输入字段,则应通过添加禁用属性来禁用“前进”按钮:
if errors $('.btn-move-forward').attr("disabled", true)
虽然有效,但我在该按钮上也有一个点击事件:(coffeescript)
$('.btn-move-forward').click -> $('#step2, #step3').toggle()
我希望.btn-move-forward
在按钮被禁用时不会触发click事件,但确实如此!
第一:我不明白为什么,因为每个浏览器规范都定义了这不应该发生。 无论如何,我试图通过做以下事情绕过它:
$('.btn-move-forward').click -> if !$(this).is(:disabled) $('#step2, #step3').toggle()
或这个
$('.btn-move-forward').click -> if $(this).prop("disabled", false) $('#step2, #step3').toggle()
或者像这样组合事件监听器:
$('.btn-move-forward').on 'click', '.btn-move-forward:enabled', -> $('#step2, #step3').toggle()
不,所有这些都无法正常工作。 该按钮仍然表现为前进按钮。
如果它被禁用,我想要的是没有收听onclick
的按钮。
disabled
属性仅适用于表单元素。 这意味着除非.btn-move-forward
元素是或
否则
disabled
属性将不起作用。
您可以在此处使用button
查看工作示例:
$('.btn-move-forward').prop("disabled", true).click(function() { console.log('Moving forward...'); })
请关闭点击事件
$('.btn-move-forward').off('click');
将其更改为使用prop()
代替。
$('.btn-move-forward').prop("disabled", true)
禁用:
$('.btn-move-forward').prop("disabled", true);
重新启用:
$('.btn-move-forward').removeClass('disabled'); // do this also. $('.btn-move-forward').prop("disabled", false);