禁用按钮仍然使用“.click()”触发
似乎禁用按钮 “onclick”function在触发程序时仍然被触发,例如:
0
function save(){ var count = parseInt($('#counter').html()); $('#counter').html(++count); } function byPassDisabled(){ $('#saveButton').click(); }
见http://jsfiddle.net/WzEvs/363/
在我的情况下,键盘快捷键绑定到触发按钮上的“.click()”的function。 我发现必须禁用shorcuts或检查按钮是否已被禁用非常烦人。 我更喜欢解决此问题的一般解决方案。
- 但为什么? 这种行为对我来说似乎不公平。
- 任何解决方法?
该属性仅禁用用户交互,该按钮仍可通过编程方式使用。
所以,是的,你得检查一下
function byPassDisabled(){ $('#saveButton:enabled').click(); }
或者,不要使用内联处理程序。
$(document).on('click', '#saveButton:enabled', function(){ // ... });
您可以通过编程方式触发单击禁用按钮。
有一些方法可以查找事件是否是用户单击按钮,或者是否已通过编程方式触发。 http://jsfiddle.net/WzEvs/373/
$(function () { $("#saveButton").on('click', function (e) { if (!e.isTrigger) { var count = parseInt($('#counter').html()); $('#counter').html(++count); } }); $("#bypassButton").on('click', function (e) { $("#saveButton").click(); }); });
如果以编程方式调用click()
则e.isTrigger
为true。 基本上你是在代码中手动触发click事件。
为了将来使用…… OP代码可以工作,因为即使DOM元素被禁用,jQuery仍然会调用它自己的处理程序。 如果要使用vanilla javascript,则会禁用disabled属性。
const element = document.getElementById('saveButton'); element.click() //this would not work
你可以触发click
静止,虽然它被disable
。正如Spokey说它只是显示用户交互(可用性仍然存在,可以通过编程方式打开)。 off
或unbind
点击将解决此问题。
谢谢
- 用于构建类似桌面的Web应用程序的Javascript库:ExtJS,jQuery,YahooUI,Mocha,SproutCore,Cappuccino,其他?
- jQuery / Javascript暂时禁用addEventListener / attachEvent附加的事件
- if / else语句在Safari中不起作用? (JQuery的)
- 我的jQuery不能与IE11一起使用
- 椭圆弧箭头边缘d3强制布局
- 如何遍历json对象?
- 如何为JVectorMap jquery插件生成新的自定义映射?
- 使用AJAX更改无缝页面
- Magento一页结帐 – 获取TypeError:checkout undefined(在opcheckout.js中)