[英]Disabled button still fires using “.click()”
似乎禁用按鈕 “onclick”功能在觸發程序時仍然被觸發,例如:
<div>
<input type="button" onclick="save()" id="saveButton" value="save" disabled="disabled" />
<input type="button" onclick="byPassDisabled()" value="bypass disabled button"/>
<div id="counter">0</div>
function save(){
var count = parseInt($('#counter').html());
$('#counter').html(++count);
}
function byPassDisabled(){
$('#saveButton').click();
}
見http://jsfiddle.net/WzEvs/363/
在我的情況下,鍵盤快捷鍵綁定到觸發按鈕上的“.click()”的功能。 我發現必須禁用shorcuts或檢查按鈕是否已被禁用非常煩人。 我更喜歡解決這個問題的一般解決方案。
該屬性僅禁用用戶交互,該按鈕仍可通過編程方式使用。
所以是的,你得檢查一下
function byPassDisabled(){
$('#saveButton:enabled').click();
}
或者,不要使用內聯處理程序。
$(document).on('click', '#saveButton:enabled', function(){
// ...
});
為了將來使用... OP代碼可以工作,因為即使DOM元素被禁用,jQuery仍然會調用它自己的處理程序。 如果要使用vanilla javascript,則會禁用disabled屬性。
const element = document.getElementById('saveButton');
element.click() //this would not work
您可以通過編程方式觸發單擊禁用按鈕。
有一些方法可以查找事件是否是用戶單擊按鈕,或者是否已通過編程方式觸發。 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事件。
你可以觸發click
靜止,雖然它被disable
。正如Spokey說它只是顯示用戶交互(可用性仍然存在,可以通過編程方式打開)。 off
或unbind
點擊將解決此問題。
謝謝
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.