我正在尝试禁用一个按钮以防止在表中添加新行。我的问题是prop()
方法工作正常,但没有禁用按钮(我无法添加新行,它工作正常,但按钮仍然点击,看起来像“活动”(和属性“禁用”没有添加到我的按钮) )。
如果我使用attr("disabled", "disabled")
而不是prop("disabled", true)
工作正常和按钮禁用(属性“禁用”添加到元素),但我读了什么使用attr()
是坏的JQuery 1.6+之后。
var addBtn = $(".k-grid-add");
addBtn.bind("click", function () {
if (grid.dataSource.data().length == 9) {
$(addBtn).prop("disabled", true); // <- work, but button still "active"
// $(addBtn).attr("disabled", "disabled"); // <- work fine
}
我做错了什么?谢谢!
由于disabled
是布尔属性,因此您需要将其设置为disabled="disabled"
:
$(addBtn).prop("disabled", "disabled");
它对我有用!看看我测试的......
addBtn = $("#btn");
addBtn.prop("disabled", true);
addBtn.on("click",function() { console.log(999); });
//
enable.onclick = function() {
addBtn.prop("disabled", false);
}
//
disable.onclick = function() {
addBtn.prop("disabled", true);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button id="btn">sdf</button>
<button id="enable">Enable</button>
<button id="disable">Disable</button>
我无法验证,它应该工作。这是我的代码的一部分,它正在工作,如果我输入超过6个字符,按钮是活动的,如果我删除它按钮被禁用。你用的是什么版本的jQuery?此外,在jQuery版本> 3.0中不推荐使用bind,使用element.on()
将更加面向未来(http://api.jquery.com/bind/)。
$commentsInput.on('input.UECommenting', function (event) {
let buttonsDisabled = $commentsInput.val().length < 7 ? true : false;
for (let button in $commentingButtons) {
$commentingButtons[button].prop({ 'disabled': buttonsDisabled, 'title': buttonsDisabled ? 'No comments without content!' : '' });
}
});
我必须建议习惯使用命名空间来处理事件,您可以轻松使用element.off('.namespace')
来确保您的事件不会被多次设置和触发。