<input id="test" type="text" value="text" />
alert($(':input:not([readonly])').length); // 1
$('#test').attr('readonly', 'readonly');
alert($(':input:not([readonly])').length); // 1
$('#test').removeAttr('readonly');
alert($(':input:not([readonly])').length); // 1
继the question here之后,我无法使解决方案起作用,因为似乎jQuery没有正确设置readonly属性(或者至少一致)。
注意我使用$('#test').attr('readonly', true);
我正在使用Chrome,而readonly属性呈现为readonly=""
。这里还有另一篇文章,建议FireFox也这样做。
我对此并不感到困扰,因为它仍然阻止了文本框的可编辑性,但我无法找到检测readonly属性的方法。
我通常喜欢jQuery,但这有点像WTF。
有什么想法吗?
答案 0 :(得分:7)
我个人不会使用removeAttr()...我只是用attr()将其设置为false。
然后你可以正常查询属性:
if ($("#X").attr("readonly"))
{
execute code
}
此外,您可以继续使用removeAttr(),然后只使用长度作为检测属性的方法:
if (!$("#X").attr("readonly").length)
{
execute code
}
如果你担心选择器,你应该选择语法为:not([readonly='readonly'])
编辑:我看到你已经在你引用的答案中。
答案 1 :(得分:0)
我认为即使您设法使用Javascript以编程方式禁用输入,智能用户也可以在禁用浏览器JavaScript时更改它。所以为了安全起见,最好重新加载服务器端的值。