【发布时间】:2015-10-28 04:35:04
【问题描述】:
我有以下脚本,它只是我实际代码的一个示例,但它的行为与实际代码相同:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<form action="http://google.com/">
<input type="text" name="item_name" />
<input type="hidden" name="submit" value="save" />
<a href="" id="save">Submit</a>
</form>
<script src="https://code.jquery.com/jquery-1.11.3.min.js"></script>
<script>
jQuery(function($){
$('#save').on('click', function(e){
e.preventDefault();
$('form').submit();
});
});
</script>
</body>
</html>
可以看到,有a标签,id为save,就是点击这个链接的时候,表单应该提交,但是没有。这是由名称为 submit 的隐藏输入引起的,如果我更改名称,它就可以正常工作。
在 linux 上的 chrome 和 firefox 上都试过了。谁能解释一下?
这里是fiddle
-- 编辑--
我尝试使用原生点击事件:
document.getElementById('save').onclick = function(e){
e.preventDefault();
document.getElementsByTagName('form')[0].submit();
}
表单也不能提交。
【问题讨论】:
-
@Pekka 如果我删除该行,则该链接将充当通常的链接。表单未提交
-
@.@ 不,这实际上是一个复杂的情况...我使用内联编辑,这就是我使用锚标记的原因
-
有人已经问过这个问题:stackoverflow.com/questions/8729319/… - 基本上 document.getElementById('redirectForm').submit 指向一个 DOM 元素,而不是指向一个函数,如果有一个名为 = submit 的元素跨度>
-
哇很酷,谢谢你指出我@kajyr
-
查看 action 属性,删除 e.preventDefault() 不会使表单提交,而只是去/刷新页面。
标签: javascript jquery html