Javascript 动态更改的属性未设置值
所以我要做的就是将文本输入的disabled和readonly属性分别设置为“disabled”和“readonly”。我尝试了以下方法:Javascript 动态更改的属性未设置值,javascript,jquery,html,Javascript,Jquery,Html,所以我要做的就是将文本输入的disabled和readonly属性分别设置为“disabled”和“readonly”。我尝试了以下方法: $("#testtext").attr('disabled','disabled'); $("#testtext").attr("readonly","readonly"); $("#testtext").attr('disabled',true); $("#testtext").attr("readonly",true); $("#testtext").p
$("#testtext").attr('disabled','disabled');
$("#testtext").attr("readonly","readonly");
$("#testtext").attr('disabled',true);
$("#testtext").attr("readonly",true);
$("#testtext").prop('disabled',true);
$("#testtext").prop("readonly",true);
生成的标记如下所示:
<input type = "text" id = "testtext" disabled />
正如您所看到的,它正在添加禁用的属性,但没有给它一个值。这适用于某些设备,但并非所有我尝试支持的设备。这似乎是jQuery应该做的事情,但我的谷歌搜索在这方面并没有太多进展。有人有什么建议吗?任何建议都将不胜感激,谢谢
$("#testtext").prop("disabled", true);
$("#testtext").prop("readonly", true);
在任何地方都可以使用,因为这些都是布尔标志:它们的存在表示标志处于启用状态(元素处于禁用/只读状态),无论属性是否具有值(甚至标记中的值是什么)⇨ disabled=false
也被禁用)。.prop(propertyName)
//要获取的属性的propertyName名称
.attr(attributeName)
//attributeName要获取的属性的名称
根据规范:
从jQuery1.6开始,.attr()方法返回未定义的属性
这还没有确定。此外,不应在上使用.attr()
普通对象、数组、窗口或文档。取回
更改DOM属性时,请使用.prop()方法
.prop()方法仅获取第一个元素的属性值
在匹配的集合中。它返回未定义的属性值
未设置,或者匹配的集合没有元素。得到
每个元素的值单独使用循环构造,例如
作为jQuery的.each()或.map()方法
属性和属性之间的差异在应用程序中可能很重要
具体情况。在jQuery1.6之前,有时使用.attr()方法
检索某些属性时考虑了属性值,
这可能会导致不一致的行为。从jQuery1.6开始,.prop()
方法提供了一种显式检索属性值的方法,而
.attr()检索属性
使用.prop()
。它比.attr()
属性通常会影响DOM元素的动态状态,而不会
更改序列化的HTML属性。例子包括价值
输入元素的属性、输入的禁用属性和
按钮,或复选框的已选中属性.prop()方法
应用于设置禁用和选中,而不是.attr()
方法
(来自
.prop()
的jquery文档)哪些设备?您正在使用jQuery Mobile吗?disabled
属性是一个:如果存在,不管值是多少,输入都被禁用。“结果标记”。。。使用JavaScript/jQuery操作DOM与标记无关。