javascript - type - jquery disable select




使用jQuery禁用/啟用輸入? (8)

jQuery 1.6+

要更改disabled屬性,您應該使用.prop()函數。

$("input").prop('disabled', true);
$("input").prop('disabled', false);

jQuery 1.5及以下版本

.prop()函數不存在,但.attr()作用類似:

設置禁用的屬性。

$("input").attr('disabled','disabled');

要再次啟用,正確的方法是使用.removeAttr()

$("input").removeAttr('disabled');

在任何版本的jQuery中

如果您只處理一個元素,則您始終可以依賴實際的DOM對象,並且可能比其他兩個選項快一點:

// assuming an event handler thus 'this'
this.disabled = true;

使用.prop().attr()方法的優點是可以為一堆選定項目設置屬性。

注意: 1.6中有一個.removeProp()方法,聽起來很像removeAttr() ,但它不應該用於像'disabled'這樣'disabled'本地屬性'disabled'摘自文檔:

注意:不要使用此方法刪除本機屬性,如選中,禁用或選中。 這將完全刪除該屬性,一旦刪除,不能再添加到元素。 使用.prop()將這些屬性設置為false。

事實上,我懷疑這種方法有很多合法用途,布爾型道具的設置方式應該是將它們設置為false,而不是像1.5中的“屬性”對應物那樣“去除”它們

$input.disabled = true;

要么

$input.disabled = "disabled";

標準的方式是什麼? 而且,相反,您如何啟用禁用的輸入?


2018年更新:

現在不需要jQuery了,自從document.querySelectordocument.querySelectorAll (用於多個元素)完成與$完全相同的工作以及更加明確的工作之後, getElementByIdgetElementsByClassNamegetElementsByTagName

禁用“input-checkbox”類的一個字段

document.querySelector('.input-checkbox').disabled = true;

或多個元素

document.querySelectorAll('.input-checkbox').forEach(el => el.disabled = true);

使用:

$("input[type=text]").attr('disabled', true);

只是為了新的慣例和使其適應未來(除非事情發生巨大的變化與ECMA6(????):

$(document).on('event_name', '#your_id', function() {
    $(this).removeAttr('disabled');
});

$(document).off('event_name', '#your_id', function() {
    $(this).attr('disabled','disabled');   
});

如果您只想反轉當前狀態(如切換按鈕行為):

$("input").prop('disabled', ! $("input").prop('disabled') );

我使用@gnarf答案並將其添加為函數

   $.fn.disabled = function (isDisabled) {
     if (isDisabled) {
       this.attr('disabled', 'disabled');
     } else {
       this.removeAttr('disabled');
     }
   };

然後像這樣使用

$('#myElement').disable(true);

$("input")[0].disabled = true;

要么

$("input")[0].disabled = false;

<html>
<body>

Name: <input type="text" id="myText">



<button onclick="disable()">Disable Text field</button>
<button onclick="enable()">Enable Text field</button>

<script>
function disable() {
    document.getElementById("myText").disabled = true;
}
function enable() {
    document.getElementById("myText").disabled = false;
}
</script>

</body>
</html>






html-input