在用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')。单击()当Firebug控制台打开时,它正在崩溃firefox。我试着改为。提交,以为它会绕过点击按钮,但根本不起作用!我看到这个,改变了提交按钮的名称,嘿,普雷斯托!它起作用了!在firebug打开的情况下也不会再发生碰撞。xoxoxoxoxoxoxox!!!我认为这就是实际问题的答案,错误是由.submit()生成的,即使应用程序的功能正常,也可以通过在不删除f.submit()的情况下更改提交按钮的名称来修复错误;谢谢你,克里斯,你太棒了!这里有一个测试工具,用于检查这一点(+很少有类似的事情):很好的验证工具,@HalilÖzgür!奇妙的东西,我被这一个卡住了,submit的名字干扰了表单的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);
};