“输入密钥”不会在Firefox中提交表单,但在Chrome中,为什么?

时间:2010-03-02 15:15:00

标签: javascript html

我有一个非常基本的表单,当我按下回车键时,firefox中没有任何反应,但是在Google Chrome中它提交了。尚未尝试其他浏览器...

点击进入firefox时没有任何事情发生。

单击提交按钮时,它在两个浏览器中都可以正常工作。

表单在DIV中,表单也有javascript,这里是简化的表单:

<form id="nav_form_main" name="nav_form_main" action="bincgi/sql_query.php" target="iframe001" method="get" onSubmit="reset_pager();">

<input type="button" name="nav_submit" id="nav_submit" value="Search" onClick="reset_and_subm();" style="width: 58px; font-size: 13px;">

//some other elements...

</form>

这是js:

function reset_pager(){
    byId("p").value = 0;
}
function reset_and_subm(){
    byId("p").value = 0;
    document.forms["nav_form_main"].submit();   
}

根本没有调用reset_pager函数......这很奇怪,因为它是一个“onsubmit”函数。所以就像表格根本没有提交一样。 但是,目标iframe中的结果显示正常,没有任何问题。

有什么想法吗?

由于

2 个答案:

答案 0 :(得分:9)

仅当表单上存在<input type="submit>时,才会触发

输入以进行提交。您可以为此添加一个隐藏的,但请记住它将提交表单并绕过您要捕获的onclick事件。您需要修补表单的onsubmit操作才能运行您的功能。

答案 1 :(得分:3)

正如Diodeus所提到的,如果您想使用 ENTER 键提交表单,则表单中需要<input type="submit">标记。

您的reset_pager函数未在onsubmit事件上触发的原因是因为onsubmit事件从未被触发。虽然这有点违反直觉,但在表单上使用submit()方法(正如您在reset_and_subm函数中所做的那样)不会导致onsubmit事件触发。

您有几个选择:

  1. 您可以在表单中添加<input type="submit">,并将所有逻辑放入onsubmit回调函数中。

  2. 观看表单上的所有keypress个事件。如果按下 ENTER 键或单击该按钮,则在提交表单之前调用一个能完成所有事情的函数,然后在表单上调用submit()