使用Javascript将禁用的属性添加到input元素
我有一个input框,我希望它被禁用,同时隐藏它,以避免移植我的表单时出现问题。
到目前为止,我有以下代码来隐藏我的input:
$(".shownextrow").click(function() { $(this).closest("tr").next().show().find('.longboxsmall').hide(); });
这是隐藏的input:
<input class="longboxsmall" type="text" />
我怎样才能将禁用的属性添加到input?
$("input").attr("disabled", true);
… …我不知道了。
这是2013年12月,我真的不知道该告诉你什么。
首先它总是.attr()
,那么它总是.prop()
,所以我回到这里更新了答案,并使其更加准确。
一年后,jQuery又改变了主意,我甚至不想跟踪这个。
长话短说,截至目前,这是最好的答案:“你可以同时使用……但这取决于”。
你应该阅读这个答案,而不是: https : //stackoverflow.com/a/5876747/257493
这些变化的发布说明包括在这里:
.attr()和.prop()都不能用于获取/设置值。 改用.val()方法(尽pipe使用.attr(“value”,“somevalue”)将继续工作,就像在1.6之前那样)。
首选用法总结
.prop()方法应该用于布尔属性/属性和HTML中不存在的属性(如window.location)。 所有其他的属性(你可以在html中看到的)可以并应该继续使用.attr()方法进行操作。
换句话说:
“.prop =非文件的东西”
“.attr”=文件的东西
……
我们都可以在这里了解一下API的稳定性
我的来源的工作代码:
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");
如果您使用的是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);
您可以获取DOM元素,并直接设置禁用的属性。
$(".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'; }); });
$(element).prop('disabled', true); //true|disabled will work on all $(element).attr('disabled', true); element.disabled = true; element.setAttribute('disabled', true);
以上所有都是完全有效的解决scheme。 select一个最适合您的需求。
只要使用jQuery的attr()
方法
$(this).closest("tr").next().show().find('.longboxsmall').attr('disabled', 'disabled');