【发布时间】:2011-03-01 14:06:33
【问题描述】:
在我的 Web 应用程序中,我对表单字段使用了一些自定义验证。在同一个表单中,我有两个按钮:一个用于实际提交表单,另一个用于取消/重置表单。
我大多使用 Safari 作为我的默认浏览器。现在 Safari 5 出来了,突然我的取消/重置按钮不再起作用了。每次我按下重置按钮时,表单中的第一个字段都会获得焦点。但是,这与我的自定义表单验证的行为相同。使用其他浏览器尝试时,一切正常。我必须是 Safari 5 的问题。
我对我的 Javascript 代码进行了一些更改,发现是以下行导致了问题:
document.getElementById("somefield").required = true;
为了确定这确实是我创建了一个测试场景的问题:
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
</head>
<body>
<form id="someform">
<label>Name:</label> <input type="text" id="name" required="true" /><br/>
<label>Car:</label> <input type="text" id="car" required="true" /><br/>
<br/>
<input type="submit" id="btnsubmit" value="Submit!" />
</form>
</body>
</html>
我预期会发生的事情确实发生了。第一个字段“名称”确实自动获得焦点。
还有其他人偶然发现这个吗?
【问题讨论】:
-
现在不需要将 required 属性设置为 true。例如: 和 是一样的
-
没错,这是我的一个坏习惯,当我习惯用 XHTML 编写代码时......但是所有现代浏览器都支持这个标签而没有 ="required" 吗?我相信 Safari 不会...
-
实际和预期的行为是什么?
-
根据blog.grayghostvisuals.com/html/using-html-required-attribute "如果该属性存在,它的值必须是空字符串或与属性的规范名称不区分大小写的匹配值,没有前导或尾随空格。”对于“boolean”属性,因此 required="true" 应该有 required="required" 或只是 required
标签: html