使用jQuery禁用/启用输入?

时间:2009-09-12 05:21:54

标签: javascript jquery html-input

$input.disabled = true;

$input.disabled = "disabled";

哪种标准方式?而且,相反,如何启用禁用输入?

19 个答案:

答案 0 :(得分:3580)

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'摘自文档:

  

注意:请勿使用此方法删除本机属性,例如已选中,已禁用或已选中。这将完全删除属性,一旦删除,就不能再次添加到元素。使用.prop()将这些属性设置为false。

事实上,我怀疑这个方法有很多合法的用途,布尔道具是以这样的方式完成的,你应该将它们设置为假,而不是像1.5中的“属性”对应物一样“删除”它们

答案 1 :(得分:54)

只是为了新的约定和&&使其适应性向前发展(除非ECMA6(????)发生剧烈变化:

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

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

答案 2 :(得分:30)

    // Disable #x
    $( "#x" ).prop( "disabled", true );
    // Enable #x
    $( "#x" ).prop( "disabled", false );

有时您需要禁用/启用输入或textarea等表单元素。 Jquery通过将disabled属性设置为" disabled"帮助您轻松完成此操作。 例如:

  //To disable 
  $('.someElement').attr('disabled', 'disabled');

要启用已停用的元素,您需要删除"禁用"来自此元素的属性或清空它的字符串。例如:

//To enable 
$('.someElement').removeAttr('disabled');

// OR you can set attr to "" 
$('.someElement').attr('disabled', '');

参考:http://garmoncheg.blogspot.fr/2011/07/how-to-disableenable-element-with.html

答案 3 :(得分:13)

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

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

答案 4 :(得分:7)

您可以在代码中将其置于全局:

$.prototype.enable = function () {
    $.each(this, function (index, el) {
        $(el).removeAttr('disabled');
    });
}

$.prototype.disable = function () {
    $.each(this, function (index, el) {
        $(el).attr('disabled', 'disabled');
    });
}

然后你可以写下这样的东西:

$(".myInputs").enable();
$("#otherInput").disable();

答案 5 :(得分:6)

如果您只想反转当前状态(如切换按钮行为):

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

答案 6 :(得分:3)

有许多使用它们的方法,您可以启用/禁用任何元素

方法1

$("#txtName").attr("disabled", true);

方法2

$("#txtName").attr("disabled", "disabled");

如果您使用的是jQuery 1.7或更高版本,请使用prop()而不是attr()。

$("#txtName").prop("disabled", "disabled");

如果您希望启用任何元素,则只需要执行与禁用它相反的操作即可。但是,jQuery提供了另一种删除任何属性的方法。

方法1

$("#txtName").attr("disabled", false);

方法2

$("#txtName").attr("disabled", "");

方法3

$("#txtName").removeAttr("disabled");

同样,如果您使用的是jQuery 1.7或更高版本,请使用prop()而不是attr()。那是。这就是您使用jQuery启用或禁用任何元素的方式。

答案 7 :(得分:2)

2018年更新:

现在不需要jQuery了,因为document.querySelectordocument.querySelectorAll(对于多个元素)与$几乎完全相同的工作已经有一段时间了,还有更明确​​的一个getElementByIdgetElementsByClassNamegetElementsByTagName

禁用"输入复选框"的一个字段类

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

或多个元素

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

答案 8 :(得分:2)

您可以使用jQuery prop()方法来禁用或启用表单元素或使用jQuery动态控制。 prop()方法需要jQuery 1.6及更高版本。

示例:

<script type="text/javascript">
        $(document).ready(function(){
            $('form input[type="submit"]').prop("disabled", true);
            $(".agree").click(function(){
                if($(this).prop("checked") == true){
                    $('form input[type="submit"]').prop("disabled", false);
                }
                else if($(this).prop("checked") == false){
                    $('form input[type="submit"]').prop("disabled", true);
                }
            });
        });
    </script>

答案 9 :(得分:1)

禁用:

$('input').attr('readonly', true); // Disable it.
$('input').addClass('text-muted'); // Gray it out with bootstrap.

启用:

$('input').attr('readonly', false); // Enable it.
$('input').removeClass('text-muted'); // Back to normal color with bootstrap.

答案 10 :(得分:0)

禁用输入字段的另一种方法是使用 jQuery 和 css,如下所示:

jQuery("#inputFieldId").css({"pointer-events":"none"})

并启用相同的输入代码如下:

jQuery("#inputFieldId").css({"pointer-events":""})

答案 11 :(得分:0)

方法4 (这是wild coder answer的扩展名)

txtName.disabled=1     // 0 for enable
<input id="txtName">

答案 12 :(得分:0)

这对我有用

$("#values:input").attr("disabled",true);
$("#values:input").attr("disabled",false);

答案 13 :(得分:0)

像这样使用

 $( "#id" ).prop( "disabled", true );

    $( "#id" ).prop( "disabled", false );

答案 14 :(得分:0)

<201>,没有JQuery(ES6)

禁用所有input

[...document.querySelectorAll('input')].map(e => e.disabled = true);

使用input

停用id="my-input"
document.getElementById('my-input').disabled = true;

问题是 JQuery,它只是FYI。

答案 15 :(得分:0)

对输入类型禁用true:

  

如果是特定输入类型(例如文本类型输入

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

适用于所有类型的输入类型

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

答案 16 :(得分:0)

我使用@gnarf回答并将其添加为函数

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

然后像这样使用

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

答案 17 :(得分:-1)

在jQuery Mobile中:

禁用

$('#someselectElement').selectmenu().selectmenu('disable').selectmenu('refresh', true);
$('#someTextElement').textinput().textinput('disable');

启用

$('#someselectElement').selectmenu().selectmenu('enable').selectmenu('refresh', true);
$('#someTextElement').textinput('enable');

答案 18 :(得分:-1)

<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>