0

所以我要做的就是将文本输入的禁用和只读属性分别设置为“禁用”和“只读”。我使用的是 Jquery 版本 1.7.1 。我尝试了以下方法:

$("#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 />

如您所见,它正在添加 disabled 属性但没有给它一个值。这适用于某些设备,但不适用于我尝试支持的所有设备。这似乎是 jQuery 应该做的事情,但我的谷歌搜索在这方面并没有想出太多。有没有人有任何意见或建议?任何建议将不胜感激,非常感谢!

4

3 回答 3

4
$("#testtext").prop("disabled", true);
$("#testtext").prop("readonly", true);

适用于任何地方,因为这些是布尔标志:它们的存在表明标志处于打开状态(元素被禁用/只读),无论属性是否具有值(甚至标记中的值是什么 ⇨ disabled=false也被禁用)。

于 2013-02-06T18:43:51.477 回答
2

.prop( propertyName ) // propertyName 要获取的属性的名称。

.attr( attributeName ) // attributeName 要获取的属性的名称。

根据规格:

从 jQuery 1.6 开始,.attr() 方法为尚未设置的属性返回 undefined。此外,.attr() 不应用于普通对象、数组、窗口或文档。要检索和更改 DOM 属性,请使用 .prop() 方法。

.prop() 方法仅获取匹配集中第一个元素的属性值。它为尚未设置的属性的值返回 undefined,或者如果匹配的集合没有元素。要单独获取每个元素的值,请使用循环构造,例如 jQuery 的 .each() 或 .map() 方法。

属性和属性之间的区别在特定情况下可能很重要。在 jQuery 1.6 之前,.attr() 方法在检索某些属性时有时会考虑属性值,这可能会导致行为不一致。从 jQuery 1.6 开始,.prop() 方法提供了一种显式检索属性值的方法,而 .attr() 检索属性。

于 2013-02-06T18:47:14.763 回答
1

.prop(). 它比布尔属性更适合/可靠.attr()

属性通常会影响 DOM 元素的动态状态,而不会更改序列化的 HTML 属性。示例包括输入元素的 value 属性、输入和按钮的 disabled 属性或复选框的 checked 属性。应该使用.prop() 方法来设置禁用和检查,而不是 .attr() 方法

(来自 的 jquery 文档.prop()

于 2013-02-06T19:20:22.267 回答