我有以下脚本,它只是我实际代码的一个示例,但它的行为与实际代码相同:
<!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();
}
形式也不能提交。
答案 0 :(得分:2)
我认为这与此问题相同: TypeError: e[h] is not a function
有一个名为submit的输入会添加&#34;提交&#34;属性到表单,意味着你不能将.submit()作为函数调用。
您应该将隐藏的输入命名为其他内容。
答案 1 :(得分:0)
您的HTML应如下所示。
axes[i,j].scatter(...)
您可以使用触发器修复它(&#39;提交&#39;)
<form action="index.php">
<input type="text" name="item_name" />
<a href="#" id="save">Submit</a>
</form>
答案 2 :(得分:0)
这是jQuery Naming模糊问题。你不应该声明任何 表单元素名称id
submit
在调用时冲突重复引用。
当用户尝试提交表单时,会将提交事件发送给元素。它只能附加到<form>
元素。可以通过点击明确的<input type="submit">
,<input type="image">
或<button type="submit">
或在某些表单元素具有焦点时按Enter键来提交表单。
根据浏览器的不同,Enter键可能只会生成表单 提交,如果表单只有一个文本字段,或仅在那里 是一个提交按钮。界面不应该依赖于 此密钥的特定行为,除非强制该问题 观察按下Enter键的按键事件。
由于.submit()方法只是.on( "submit", handler )
的简写,因此可以使用.off( "submit" )
表单及其子元素不应使用与表单属性冲突的输入名称或ID,例如submit
,length
或method
。 名称冲突可能导致令人困惑的失败。
答案 3 :(得分:0)
您需要更改&#34;提交&#34;输入按钮的名称。别的东西。有一个名为&#34的元素;提交&#34;导致表单的提交方法不再起作用,这意味着表单无法通过JavaScript提交(至少不容易)。
这是因为一个名为&#34;提交&#34;的输入元素。可以像这样引用它的名称:form1.submit。也就是说,input元素被添加为表单对象的属性,属性名称是input元素的名称。这基本上隐藏了表单原型上的提交功能。