我有一个非常基本的表单,当我按下回车键时,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中的结果显示正常,没有任何问题。
有什么想法吗?
由于
答案 0 :(得分:9)
<input type="submit>
时,才会触发 输入以进行提交。您可以为此添加一个隐藏的,但请记住它将提交表单并绕过您要捕获的onclick
事件。您需要修补表单的onsubmit
操作才能运行您的功能。
答案 1 :(得分:3)
正如Diodeus所提到的,如果您想使用 ENTER 键提交表单,则表单中需要<input type="submit">
标记。
您的reset_pager
函数未在onsubmit
事件上触发的原因是因为onsubmit
事件从未被触发。虽然这有点违反直觉,但在表单上使用submit()
方法(正如您在reset_and_subm
函数中所做的那样)不会导致onsubmit
事件触发。
您有几个选择:
您可以在表单中添加<input type="submit">
,并将所有逻辑放入onsubmit
回调函数中。
观看表单上的所有keypress
个事件。如果按下 ENTER 键或单击该按钮,则在提交表单之前调用一个能完成所有事情的函数,然后在表单上调用submit()
。