使用 jQuery 禁用/启用输入?

发布于 2024-08-04 18:04:30 字数 145 浏览 2 评论 0原文

$input.disabled = true;

或者

$input.disabled = "disabled";

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

$input.disabled = true;

or

$input.disabled = "disabled";

Which is the standard way? And, conversely, how do you enable a disabled input?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(19

耶耶耶 2024-08-11 18:04:30

jQuery 1.6+

要更改 disabled 属性,您应该使用 .prop()< /code>函数。

$("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。

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

jQuery 1.6+

To change the disabled property you should use the .prop() function.

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

jQuery 1.5 and below

The .prop() function doesn't exist, but .attr() does similar:

Set the disabled attribute.

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

To enable again, the proper method is to use .removeAttr()

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

In any version of jQuery

You can always rely on the actual DOM object and is probably a little faster than the other two options if you are only dealing with one element:

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

The advantage to using the .prop() or .attr() methods is that you can set the property for a bunch of selected items.


Note: In 1.6 there is a .removeProp() method that sounds a lot like removeAttr(), but it SHOULD NOT BE USED on native properties like 'disabled' Excerpt from the documentation:

Note: Do not use this method to remove native properties such as checked, disabled, or selected. This will remove the property completely and, once removed, cannot be added again to element. Use .prop() to set these properties to false instead.

In fact, I doubt there are many legitimate uses for this method, boolean props are done in such a way that you should set them to false instead of "removing" them like their "attribute" counterparts in 1.5

梦在夏天 2024-08-11 18:04:30

只是为了新的约定&&使其能够适应未来(除非 ECMA6 发生巨大变化(???):

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

以及

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

Just for the sake of new conventions && making it adaptable going forward (unless things change drastically with ECMA6(????):

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

and

$(document).off('event_name', '#your_id', function() {
    $(this).attr('disabled','disabled');   
});
尐偏执 2024-08-11 18:04:30
// Disable #x
$( "#x" ).prop( "disabled", true );
// Enable #x
$( "#x" ).prop( "disabled", false );

有时您需要禁用/启用表单元素,例如输入或文本区域。 Jquery 通过将禁用属性设置为“禁用”来帮助您轻松实现此目的。
例如:

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

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

Sometimes you need to disable/enable the form element like input or textarea. Jquery helps you to easily make this with setting disabled attribute to "disabled".
For e.g.:

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

To enable disabled element you need to remove "disabled" attribute from this element or empty it's string. For e.g:

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

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

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

‘画卷フ 2024-08-11 18:04:30
$("input")[0].disabled = true;

或者

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

or

$("input")[0].disabled = false;
墟烟 2024-08-11 18:04:30

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

方法 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 启用或禁用任何元素的方法。

There are many ways using them you can enable/disable any element :

Approach 1

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

Approach 2

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

If you are using jQuery 1.7 or higher version then use prop(), instead of attr().

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

If you wish to enable any element then you just have to do opposite of what you did to make it disable. However jQuery provides another way to remove any attribute.

Approach 1

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

Approach 2

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

Approach 3

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

Again, if you are using jQuery 1.7 or higher version then use prop(), instead of attr(). That's is. This is how you enable or disable any element using jQuery.

瞎闹 2024-08-11 18:04:30

像这样使用,

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

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

Use like this,

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

 $( "#id" ).prop( "disabled", false );
開玄 2024-08-11 18:04:30

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

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

如注释中所述,以下内容还将切换道具:

$("input").prop('disabled', function(i, v) { return !v; });

If you just want to invert the current state (like a toggle button behaviour):

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

As noted in comments, the following will also toggle the prop:

$("input").prop('disabled', function(i, v) { return !v; });
记忆消瘦 2024-08-11 18:04:30

您可以将其放在代码中的全局位置:

$.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();

You can put this somewhere global in your code:

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

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

And then you can write stuff like:

$(".myInputs").enable();
$("#otherInput").disable();
墨落画卷 2024-08-11 18:04:30

2018 年更新:

现在不再需要 jQuery,自从 document.querySelectordocument.querySelectorAll (对于多个元素)完成与 $ 几乎完全相同的工作以来已经有一段时间了,加上更明确的 getElementByIdgetElementsByClassNamegetElementsByTagName

禁用“input-checkbox”类的一个字段

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

或多个元素

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

Update for 2018:

Now there's no need for jQuery and it's been a while since document.querySelector or document.querySelectorAll (for multiple elements) do almost exactly same job as $, plus more explicit ones getElementById, getElementsByClassName, getElementsByTagName

Disabling one field of "input-checkbox" class

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

or multiple elements

document.querySelectorAll('.input-checkbox').forEach(el => el.disabled = true);
灯角 2024-08-11 18:04:30

这对我有用

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

this works for me

$("#values:input").attr("disabled",true);
$("#values:input").attr("disabled",false);
暗地喜欢 2024-08-11 18:04:30

您可以使用 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>

You can use the jQuery prop() method to disable or enable form element or control dynamically using jQuery. The prop() method require jQuery 1.6 and above.

Example:

<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>
白龙吟 2024-08-11 18:04:30

禁用:

$('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.

Disable:

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

Enable:

$('input').attr('readonly', false); // Enable it.
$('input').removeClass('text-muted'); // Back to normal color with bootstrap.
陌伤浅笑 2024-08-11 18:04:30

对输入类型禁用 true :

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

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

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

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

Disable true for input type :

In case of a specific input type (Ex. Text type input)

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

For all type of input type

$("input").attr('disabled', true);
も星光 2024-08-11 18:04:30

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

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

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

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

An alternate way to disable the input field is by using jQuery and css like this:

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

and to enable the same input the code is as follows:

jQuery("#inputFieldId").css({"pointer-events":""})
佼人 2024-08-11 18:04:30
<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>
<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>
流年已逝 2024-08-11 18:04:30

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

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

然后像这样使用

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

I used @gnarf answer and added it as function

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

Then use like this

$('#myElement').disable(true);
薄凉少年不暖心 2024-08-11 18:04:30

2018,没有 JQuery (ES6)

禁用所有 input

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

使用 id="my-input" 禁用 input

document.getElementById('my-input').disabled = true;

问题是 使用 JQuery,仅供参考。

2018, without JQuery (ES6)

Disable all input:

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

Disable input with id="my-input"

document.getElementById('my-input').disabled = true;

The question is with JQuery, it's just FYI.

冷…雨湿花 2024-08-11 18:04:30

方法 4(这是狂野编码器答案的扩展)

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

Approach 4 (this is extension of wild coder answer)

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

爱的故事 2024-08-11 18:04:30

在 jQuery Mobile 中:

对于禁用

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

对于启用

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

In jQuery Mobile:

For disable

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

For enable

$('#someselectElement').selectmenu().selectmenu('enable').selectmenu('refresh', true);
$('#someTextElement').textinput('enable');
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文