无法启用禁用的输入

dor*_*ado 9 html javascript jquery

可以轻松禁用输入元素,但是以何种方式启用它们?

以下代码可以禁用但不启用input元素.

$('#dis').click(function() {
  $('#inp').attr('disabled', 'true');
});

$('#enb').click(function() {
  $('#inp').attr('disabled', 'false');
});
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input id='inp' type='text'>
<button id='enb'>Enable</button>
<button id='dis'>Disable</button>
Run Code Online (Sandbox Code Playgroud)

Ale*_*lex 8

只是为了扩大答案......

真正的问题是你试图将disabled设置为false,setAttribute()因为它不像你期望的那样.如果禁用属性被设置时,不管值,因此,一个元件被禁用disabled="true",disabled="disabled"并且disabled="false"都是等效的:所述元件被禁用).

您应该删除完整属性

$('#enb').click(function() {
   $('#inp').removeAttr('disabled');
});
Run Code Online (Sandbox Code Playgroud)


Sel*_*ish 6

问题在于您的代码使用引号truefalse用引号编写,使它们成为字符串而不是布尔值.请注意这两个'true''false'是truthy值,因此你的代码中设置启用值设置为true在这两种情况下.

我希望以下内容对您有用,请检查以下代码段:

$('#dis').click(function() {
    $("#inp").prop('disabled', true);
});

$('#enb').click(function() {
    $("#inp").prop('disabled', false);
});
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input id='inp' type='text'>
<button id='enb'>Enable</button>
<button id='dis'>Disable</button>
Run Code Online (Sandbox Code Playgroud)