soh*_*970 16 html javascript jquery
这不起作用:
$("#elementId").attr("required", "true");
Run Code Online (Sandbox Code Playgroud)
在Chrome和Firefox中,DOM都会生成required属性(无值)或required=""(空值).
并且这个例子中的值是"真"并不重要.如果你尝试"asdf"同样的事情发生.
奇怪的是,我相信这曾经发挥作用,因为这个新代码是一个持续了好几年的大型项目的一部分.
我唯一能想到的是我的Chrome(v10)和Firefox(v4)现在都已经足够先进,他们将所需属性识别为HTML5保留关键字.我添加了novalidate属性,认为这可能会关闭任何与表单相关的HTML5.没有这样的运气.
思考?
编辑:
为了澄清,这只发生在JQuery上.如果我这样说,它有效:
$("#elementId")[0].setAttribute("required", "true");
Run Code Online (Sandbox Code Playgroud)
JQuery中有错误吗?知道为什么这只发生在JQuery上吗?我们的开发团队喜欢所有代码,尽可能通过JQuery.我可以使用直接的setAttribute JavaScript方法,但宁可使用可行的JQuery解决方案.
编辑2:
问题的症结在于......
为什么attr()在常规setAttribute()方法中使用JQuery的方法不起作用?该attr()方法setAttribute()在某些时候调用是否较低?
这就是令人困惑的事情.required="true"如果您使用setAttribute(),则Chrome和Firefox是完美的设置.
tou*_*tpt 20
您可以使用prop来实现此目的:
$("#elementId").prop("required", true);
Run Code Online (Sandbox Code Playgroud)
相应文档:http://jquery.com/upgrade-guide/1.9/#attr-versus-prop-
Wes*_*rch 11
它确实与浏览器有关.我检查了IE8,它将应用您设置的任何字符串值到必需的属性.
由于您不需要任何值(仅必须存在该属性),因此不会影响默认行为.如果你滥用javascript钩子的属性值,这是另一回事:)
<input required>与<input required="">和相同<input required="honky-tonk">
由于IE8不支持html5,它就像设置一个虚构的属性,所以你可以设置$("input").attr("derp", "derty")并将它分配给元素.
我的猜测是,jquery使用required=""那些希望在XHTML严格语法中使用它的人,同时仍然符合HTML5标准.
http://dev.w3.org/html5/spec/Overview.html#the-required-attribute
http://dev.w3.org/html5/spec/Overview.html#boolean-attribute
小智 7
我得到这个工作的方式是实现以下好的旧javascript代替任何jQuery:
document.getElementById("inputid").required = true;
Run Code Online (Sandbox Code Playgroud)
或者,(显然)
document.getElementById("inputid").required = false;
Run Code Online (Sandbox Code Playgroud)
根据要求.
我已经阅读了jQuery API上的.attr()和.prop()页面,并且似乎不支持"required"属性 - 但我愿意更正.
| 归档时间: |
|
| 查看次数: |
74170 次 |
| 最近记录: |