我有html表单,其中包含name = id的输入标记 出于某种原因,jQuery将此字段映射到表单id属性。 如果你查看下面的简单html,你会发现
$('#f1')[0].id = [input element]#inputid
$('#f2')[0].id = "f2"
有人知道为什么,或者它是一个bug,并且有人知道jquery将name = id元素映射到表单的位置吗?
<html>
<head>
<title>Strange jQuery FORM.id behavior</title>
<script src="http://code.jquery.com/jquery-1.11.0.min.js" type=
"text/javascript"></script>
</head>
<body>
<form id="f1" name="f1">
<input id="inputid" name="id" value="ID">
</form>
<form id="f2" name="f2">
<input name="key" value="KEY">
</form>
</body>
</html>
jquery-mobile将尝试使用此form.id字符串,如果您的表单包含name = id输入,则会失败...
尝试了大多数浏览器,jquery verisons,结果相同。
修改:
对不起 - 只检查过jQuery,而不是jQuery-mobile的bug,这是在3月12日更正的。
不是在1.4.2中,当使用getAttribute('id')进行修补时,它可以工作......
https://github.com/jquery/jquery-mobile/commit/9ff610de479097c85ec7289e67fc656e5581d817
答案 0 :(得分:4)
这实际上与jQuery无关。
问题在于,在DOM中,表单中的元素可以作为表单的属性访问,其name
属性作为键。这是记录in the HTML5 spec(nb,它不是非常易于读者阅读)。在确定属性值时,此值将覆盖id
属性的值。
引用name
元素的其他属性的form
属性也是如此,例如submit
,reset
,甚至name
。 (转到this jsFiddle并在单击链接后查看错误控制台以查看此问题的实际效果。)
给表单元素name
属性作为form
元素的属性名称是一个坏主意。请改为选择其他name
。