我正在尝试制作一个提交表单的链接。为什么命名提交输入元素submit
时,链接不再有效?
//breaks form submission
<input type="submit" value="Submit" name="submit" />
//does not break form submission
<input type="submit" value="Submit" name="xsubmit" />
在Chrome中,我收到以下错误。
Uncaught TypeError: Property 'submit' of object #<HTMLFormElement> is not a function
不工作
<p>Type 'correct' to validate.</p>
<form method="post" enctype="multipart/form-data">
<input type="submit" value="Submit" name="submit" />
<a id="btn_submit">
<span id="txt_submit">Submit</span>
</a>
</form>
<script>
$("#btn_submit").click(function() {
$("form").submit();
});
$("form").submit(function() {
});
</script>
WORKING
<p>Type 'correct' to validate.</p>
<form method="post" enctype="multipart/form-data">
<input type="submit" value="Submit" name="xsubmit" />
<a id="btn_submit">
<span id="txt_submit">Submit</span>
</a>
</form>
<script>
$("#btn_submit").click(function() {
$("form").submit();
});
$("form").submit(function() {
});
</script>
答案 0 :(得分:12)
“提交”是一个保留字。它与javascript冲突。只需将输入的名称更改为其他名称。
来自方法submit()的jQuery文档:
表单及其子元素不应使用输入名称或ID 与表单属性冲突,例如提交,长度或方法。 名称冲突可能导致混乱的故障。有关的完整列表 规则以及检查这些问题的标记,请参阅DOMLint。
答案 1 :(得分:5)
两个变化:
$(function () {
$("#btn_submit").click(function(e) {
e.preventDefault();
$("form").submit();
});
$("form").submit(function() {
});
});
首先,在document.ready处理程序$(function () {...});
中包含bind
其次,在事件上添加preventDefault调用以停止正常的锚点功能。