使用Javascript将disabled属性添加到input元素

use*_*391 125 javascript jquery input onclick

我有一个输入框,我希望它被禁用,同时隐藏它以避免在移植表单时出现问题.

到目前为止,我有以下代码来隐藏我的输入:

$(".shownextrow").click(function() { 
    $(this).closest("tr").next().show().find('.longboxsmall').hide();
});
Run Code Online (Sandbox Code Playgroud)

这是因此隐藏的输入:

<input class="longboxsmall" type="text" />
Run Code Online (Sandbox Code Playgroud)

如何将disabled属性添加到输入?

Inc*_*ito 278

$("input").attr("disabled", true); 截至...我不知道了.

这是2013年12月,我真的不知道该告诉你什么.

首先它总是.attr(),然后它总是.prop(),所以我回到这里更新答案,使其更准确.

然后一年后jQuery再次改变主意,我甚至不想跟踪这个.

简而言之,截至目前,这是最好的答案:"你可以同时使用两者......但这取决于它."

您应该阅读此答案:https://stackoverflow.com/a/5876747/257493

他们的发布说明包含在这里:

不应使用.attr()和.prop()来获取/设置值.使用.val()方法(尽管使用.attr("value","somevalue")将继续工作,就像1.6)之前一样.

首选用法摘要

.prop()方法应该用于布尔属性/属性以及html中不存在的属性(例如window.location).所有其他属性(您可以在html中看到的属性)可以并且应该继续使用.attr()方法进行操作.

或者换句话说:

".prop =非文档内容"

".attr"=文件内容

......

我们都可以在这里学到关于API稳定性的教训......

  • +1使更新文本足够大,让我注意 (3认同)

Mir*_*ciu 44

来自我的来源的工作代码:

HTML世界

<select name="select_from" disabled>...</select>
Run Code Online (Sandbox Code Playgroud)

JS WORLD

var from = jQuery('select[name=select_from]');

//add disabled
from.attr('disabled', 'disabled');



//remove it
from.removeAttr("disabled");
Run Code Online (Sandbox Code Playgroud)

  • 作为来自谷歌的人们的一个注释,直接来自[jQuery](http://api.jquery.com/attr/#attr1):`从jQuery 1.6开始,.attr()方法返回未定义的属性没有设定.要检索和更改DOM属性(如表单元素的已选中,已选择或已禁用状态),请使用.prop()方法 (2认同)

iCo*_*nor 15

如果您正在使用jQuery,那么有几种不同的方法来设置disabled属性.

var $element = $(...);
    $element.prop('disabled', true);
    $element.attr('disabled', true); 

    // The following do not require jQuery
    $element.get(0).disabled = true;
    $element.get(0).setAttribute('disabled', true);
    $element[0].disabled = true;
    $element[0].setAttribute('disabled', true);
Run Code Online (Sandbox Code Playgroud)

  • 是的,这对我来说是进步,我并没有走那么远来提高性能。 (2认同)

use*_*716 11

您可以获取DOM元素,并直接设置disabled属性.

$(".shownextrow").click(function() { 
  $(this).closest("tr").next().show()
          .find('.longboxsmall').hide()[0].disabled = 'disabled';
});
Run Code Online (Sandbox Code Playgroud)

或者如果有多个,您可以使用each()它们来设置所有这些:

$(".shownextrow").click(function() { 
  $(this).closest("tr").next().show()
          .find('.longboxsmall').each(function() {
               this.style.display = 'none';
               this.disabled = 'disabled';
          });
});
Run Code Online (Sandbox Code Playgroud)


小智 11

$(element).prop('disabled', true); //true|disabled will work on all
$(element).attr('disabled', true); 
element.disabled = true;
element.setAttribute('disabled', true);
Run Code Online (Sandbox Code Playgroud)

以上所有都是完全有效的解决方案.选择最符合您需求的产品.

  • 感谢您提供不需要 jQuery 的解决方案。 (2认同)

小智 9

由于问题是询问如何使用 JS 执行此操作,因此我提供了一个普通的 JS 实现。

var element = document.querySelector(".your-element-class-goes-here");
// it's a good idea to check whether the element exists
if (element != null && element != undefined) {
  element.disabled = "disabled";
}
Run Code Online (Sandbox Code Playgroud)


Gab*_*abe 6

只需使用jQuery的attr()方法

$(this).closest("tr").next().show().find('.longboxsmall').attr('disabled', 'disabled');
Run Code Online (Sandbox Code Playgroud)

  • 并使用`.removeAttr('disabled');`删除禁用状态 (5认同)

小智 5

在 JQuery 中,您可以使用以下函数:

$("input").prop('disabled', true);
$("input").prop('disabled', false);
Run Code Online (Sandbox Code Playgroud)

对于原生js你可以使用:

document.getElementById("myElement").disabled = true;
Run Code Online (Sandbox Code Playgroud)

  • 您好,欢迎来到 StackOverflow!嗯,你可以使用代码块吗?这将使其他人易于阅读。只需在代码之前和之后添加```即可。 (2认同)