我正尝试禁用一个按钮,以防止在表中添加新行。
我的问题是prop()
方法可以正常工作,但是不能禁用按钮(我不能添加新行,它可以正常工作,但是按钮仍然单击并且看起来像“活动”(并且未添加属性“禁用”按钮))。
如果我使用attr("disabled", "disabled")
而不是prop("disabled", true)
可以正常工作并且禁用按钮(属性添加到元素“ disabled”),但是我读到使用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
}
我做错了什么?谢谢!
答案 0 :(得分:0)
由于disabled
是布尔属性,因此您需要将其设置为disabled="disabled"
:
$(addBtn).prop("disabled", "disabled");
答案 1 :(得分:0)
它为我工作!看看我测试过的....
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>
答案 2 :(得分:0)
我无法验证,它应该可以工作。这是我的代码的一部分,它可以正常工作,如果我输入的字符数超过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')
以确保不会多次设置和触发事件。