jQuery prop()方法有效,但未向元素添加“禁用”属性

时间:2019-02-15 07:32:46

标签: javascript jquery html html5

我正尝试禁用一个按钮,以防止在表中添加新行。 我的问题是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
    }

我做错了什么?谢谢!

3 个答案:

答案 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')以确保不会多次设置和触发事件。