使用 JavaScript 将禁用属性添加到输入元素

发布于 2024-09-25 06:46:12 字数 339 浏览 2 评论 0原文

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

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

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

这是因此隐藏的输入:

<input class="longboxsmall" type="text" />

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

I have an input box and I want it to be disabled and at the same time hide it to avoid problems when porting my form.

So far I have the following code to hide my input:

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

This is the input that gets hidden as a result:

<input class="longboxsmall" type="text" />

How can I also add the disabled attribute to the input?

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

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

发布评论

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

评论(9

无边思念无边月 2024-10-02 06:46:12

$("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 稳定性的教训...

$("input").attr("disabled", true); as of... I don't know any more.

It's December 2013 and I really have no idea what to tell you.

First it was always .attr(), then it was always .prop(), so I came back here updated the answer and made it more accurate.

Then a year later jQuery changed their minds again and I don't even want to keep track of this.

Long story short, as of right now, this is the best answer: "you can use both... but it depends."

You should read this answer instead: https://stackoverflow.com/a/5876747/257493

And their release notes for that change are included here:

Neither .attr() nor .prop() should be used for getting/setting value. Use the .val() method instead (although using .attr("value", "somevalue") will continue to work, as it did before 1.6).

Summary of Preferred Usage

The .prop() method should be used for boolean attributes/properties and for properties which do not exist in html (such as window.location). All other attributes (ones you can see in the html) can and should continue to be manipulated with the .attr() method.

Or in other words:

".prop = non-document stuff"

".attr" = document stuff

...
...

May we all learn a lesson here about API stability...

天气好吗我好吗 2024-10-02 06:46:12

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

HTML WORLD

<select name="select_from" disabled>...</select>

JS WORLD

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

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



//remove it
from.removeAttr("disabled");

Working code from my sources:

HTML WORLD

<select name="select_from" disabled>...</select>

JS WORLD

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

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



//remove it
from.removeAttr("disabled");
命比纸薄 2024-10-02 06:46:12

如果您使用 jQuery,则有几种不同的方法可以设置禁用属性。

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

If you're using jQuery then there are a few different ways to set the disabled attribute.

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);
北凤男飞 2024-10-02 06:46:12
$(element).prop('disabled', true); //true|disabled will work on all
$(element).attr('disabled', true); 
element.disabled = true;
element.setAttribute('disabled', true);

以上所有都是完全有效的解决方案。选择最适合您需求的一款。

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

All of the above are perfectly valid solutions. Choose the one that fits your needs best.

九命猫 2024-10-02 06:46:12

由于问题是询问如何使用 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";
}

Since the question was asking how to do this with JS I'm providing a vanilla JS implementation.

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";
}

不喜欢何必死缠烂打 2024-10-02 06:46:12

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

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

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

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

You can get the DOM element, and set the disabled property directly.

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

or if there's more than one, you can use each() to set all of them:

$(".shownextrow").click(function() { 
  $(this).closest("tr").next().show()
          .find('.longboxsmall').each(function() {
               this.style.display = 'none';
               this.disabled = 'disabled';
          });
});
偏爱自由 2024-10-02 06:46:12

只需使用 jQuery 的 attr() 方法

$(this).closest("tr").next().show().find('.longboxsmall').attr('disabled', 'disabled');

Just use jQuery's attr() method

$(this).closest("tr").next().show().find('.longboxsmall').attr('disabled', 'disabled');
無處可尋 2024-10-02 06:46:12

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

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

对于本机 js,您可以使用:

document.getElementById("myElement").disabled = true;

in JQuery you can use the following functions:

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

For native js you can use:

document.getElementById("myElement").disabled = true;
梦中楼上月下 2024-10-02 06:46:12
$("input").attr('disabled', true);

我尝试了 .prop(),但这在 JQuery 3.7.1 上对我不起作用

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

I tried .prop(), but that did NOT work for me on JQuery 3.7.1

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