在用javascript截获提交后,无法“submit()”html表单

在用javascript截获提交后,无法“submit()”html表单,javascript,Javascript,我试图拦截表单提交,以更改我的关键字标签的值 我有以下代码: <HTML> <FORM name="searchForm" method="get" action="tmp.html" > <input type="text" name="keywords" /> <input type="button" name="submit" value="submit" onclick="formIntercept();"/> </FORM>

我试图拦截表单提交,以更改我的
关键字
标签的值

我有以下代码:

<HTML>
<FORM name="searchForm" method="get" action="tmp.html" >
<input type="text" name="keywords" />
<input type="button" name="submit" value="submit" onclick="formIntercept();"/>
</FORM>
<SCRIPT language="JavaScript">
document.searchForm.keywords.focus();
function formIntercept( ) {
    var f = document.forms['searchForm'];
    f.keywords.value = 'boo';
    f.submit();
};
</SCRIPT>
</HTML>
我如何提交带有已操纵关键字的表单?


<html>
<head></head>
<body>
<form name="searchForm" method="get" action="tmp.html" onsubmit="formIntercept(this);">
<input type="text" name="keywords" />
<input type="submit" name="submit" value="submit"/>
</form>
<script type="text/javascript">
document.searchForm.keywords.focus();
function formIntercept( form ) {
    form.keywords.value = 'boo';
    //form.submit();
}
</script>
</body>
</html>
document.searchForm.keywords.focus(); 函数formIntercept(表单){ form.keywords.value='boo'; //表单提交(); }
尝试调用
表单提交()时出错的原因是您的提交按钮被称为“提交”。这意味着表单对象的“submit”属性现在是对submit按钮的引用,覆盖了表单原型的“submit”方法

重命名submit按钮将允许您调用
submit()
方法而不会出错。

请参见jQuery


问题是当某个元素是
submit()时,方法将不起作用。这种情况的最佳解决方案是将提交类型输入的名称更改为其他名称,例如按钮提交等。

只要更改提交按钮的名称,它就会工作

克里斯·巴特勒很好地解释了这个问题

您可以使用HTMLFormElement的本机提交方法来解决问题。 就你而言:

function formIntercept( ) {
    var f = document.forms['searchForm'];
    f.keywords.value = 'boo';
    HTMLFormElement.prototype.submit.call(f);
};

发现这非常有用,错误是由重命名
文档后表单中另一个名为submit的元素引起的。getElementById('myform')。submit()
有效

什么是
,或者更具体地说,您在type属性中真正的意思是什么?oops。你说得对。将
type=“label”
更改为
type=“text”
就是这样!您将
type=“button”
更改为
type=“submit”
成功。谢谢我想这是因为删除了
form.submit()
Jacob对其进行了进一步的调整,但仅仅将
type=“button”
更改为
type=“submit”
就可以使代码正常工作。不过,我也会接受他的其他改变,因为它似乎没有我的方式那么粗糙。我认为这实际上并不能回答问题,甚至不能提供正确的解决方法。下面的答案解释了错误发生的原因。先生,你是上帝!我从来不知道这件事。我使用的是
$('form:submit')。单击()$("form").submit( function() {
   // TODO tweak your form data before it gets sent
});
function formIntercept( ) {
    var f = document.forms['searchForm'];
    f.keywords.value = 'boo';
    HTMLFormElement.prototype.submit.call(f);
};