按enter键不会调用HTML表单中的javascript函数

按enter键不会调用HTML表单中的javascript函数,javascript,forms,Javascript,Forms,我有一个带有一个输入字段的简单表单。当我使用submit时,它可以正常工作,但是在文本字段中点击enter会使用URL中的form变量重新加载页面 我浏览了许多在线可用的解决方案(除了JQuery,因为它对于这么简单的东西来说似乎有点过头了),但还没能让‘enter’起作用。任何帮助都会很好 <form name="myform" action="" method="GET" > Enter text: <br> <input type="text" name=

我有一个带有一个输入字段的简单表单。当我使用submit时,它可以正常工作,但是在文本字段中点击enter会使用URL中的form变量重新加载页面

我浏览了许多在线可用的解决方案(除了JQuery,因为它对于这么简单的东西来说似乎有点过头了),但还没能让‘enter’起作用。任何帮助都会很好

<form name="myform" action="" method="GET" > Enter text: <br>
  <input type="text" name="queryinput" onkeyup="if(isEnterPressed(event)){initialize(this.form.queryinput.value);}"><P>
  <input type="button" name="Search" value="Search" onClick="initialize(this.form.queryinput.value);">
  <input type="submit" value="Reset" onclick="reset();" />
</form>

function isEnterPressed(e){
  var keycode=null;
  if (e!=null){
    if (window.event!=undefined)    
      if (window.event.keyCode) keycode = window.event.keyCode; 
      else if (window.event.charCode) keycode = window.event.charCode;
    }else{
            keycode = e.keyCode;
    }
  }
return (keycode == 13);}
输入文本:

函数I被插入(e){ var-keycode=null; 如果(e!=null){ if(window.event!=未定义) 如果(window.event.keyCode)keyCode=window.event.keyCode; else if(window.event.charCode)keycode=window.event.charCode; }否则{ keycode=e.keycode; } } return(keycode==13);}

使用onsubmit而不是keycode侦听器编辑1:Version:

<form name="myform" action="" onsubmit="return initialize(this.form.queryinput.value)"  method="GET"> Enter text:<br>
<input type="text" name="queryinput">
<input type="submit" value="submit" >
<input type="button" value="Reset" onclick="clearAllPoints();"/>
</form>
输入文本:

使用onSubmit会导致单击按钮的行为与按enter键相同,但这两个版本都不起作用。

请尝试对
表单
使用,而不是对
输入
元素使用
onClick
事件。似乎只有当鼠标实际点击时,
onClick
才会触发(这很有道理,我想我从来没有遇到过这样的情况)。但是,无论表单是如何提交的,
onSubmit
事件都应该触发。

尝试对
表单
使用,而不是对
输入
元素使用
onClick
事件。似乎只有当鼠标实际点击时,
onClick
才会触发(这很有道理,我想我从来没有遇到过这样的情况)。但是,无论表单是如何提交的,
onSubmit
事件都应触发。

如果您将字段设置在表单之外,则当您按enter键时,它不会自动提交表单。然后,您可以让按钮将输入字段中的文本复制到实际表单中的隐藏字段,然后提交它

--编辑,添加代码--

输入文本:
函数doSubmitForm(){ itm1=document.getElementById('myinputfield'); itm2=document.getElementById('queryinput'); 如果(!itm1 | |!itm2)返回false; //您可以将表单输入验证放在这里 itm2.value=itm1.value; document.forms[“myform”].submit(); }
如果将字段设置在表单之外,则按enter键时,它不会自动提交表单。然后,您可以让按钮将输入字段中的文本复制到实际表单中的隐藏字段,然后提交它

--编辑,添加代码--

输入文本:
函数doSubmitForm(){ itm1=document.getElementById('myinputfield'); itm2=document.getElementById('queryinput'); 如果(!itm1 | |!itm2)返回false; //您可以将表单输入验证放在这里 itm2.value=itm1.value; document.forms[“myform”].submit(); }

在表单中使用enter键将提交表单,我是否遗漏了什么?我想这是一个输入错误,但您使用

关闭了第一个输入:PI不要获取输入码:if语句将始终为真@Nick我希望表单调用函数

initialize
,而不是默认值setup@Bakaburg我真的把它合上了…那只不过是化妆品而已。keyup代码来自一个类似问题的解决方案之一——我不太确定它是如何工作的。在表单中使用enter将提交表单,我是否遗漏了什么?我想这是一个输入错误,但您使用

关闭了第一个输入:PI不获取您的keyup代码:if语句将始终为真@Nick我希望表单调用函数

initialize
,而不是默认值setup@Bakaburg我真的把它合上了…那只不过是化妆品而已。keyup代码来自一个类似问题的解决方案之一——我不太确定它的用途。我想投票让你达到10000点,但你仍然少了12点。@darkporter:我很欣赏这种情绪,它有点激动人心:)订阅form.submit而不是button.click更容易访问。鼠标点击,输入键,iPhone的“Go”按钮,我们还没有想到的其他提交表单的方式,如果你听了提交,你会被覆盖。@darkporter:当然。当然,最好将代码与标记分离,并从外部订阅事件,而不是直接在HTML中订阅。我以前也尝试过使用onSubmit,但无法使其正常工作。我正在使用表单获取一个地址,以便在同一页面上加载谷歌地图而不刷新它。onSubmit是否仅用于加载新页面的情况?请在问题中找到我的更新代码。我想投票让你达到10000,但你仍然少了12分。@darkporter:我很感激这种感觉,这有点令人兴奋:)订阅表单更方便。提交而不是按钮。单击。鼠标点击,输入键,iPhone的“Go”按钮,我们还没有想到的其他提交表单的方式,如果你听了提交,你会被覆盖。@darkporter:当然。当然,最好将代码与标记分离,并从外部订阅事件,而不是直接在HTML中订阅。我以前也尝试过使用onSubmit,但无法使其正常工作。我正在使用表单获取一个地址,以便在同一页面上加载谷歌地图而不刷新它。onSubmit是否仅用于加载新页面的情况?请在问题中找到我的更新代码。我不确定如何修改表单以反映这一点-您能给我举个例子或提供一个简单的例子吗?谢谢您的例子。我试着使用它,它解决了按enter键导致页面重新加载的问题。不幸的是,当我按enter键时,它仍然没有提交表单-我每次都必须手动单击提交按钮。我不确定如何修改表单以反映这一点-您能给我举个例子或提供
Enter text:<br>
<input type="text" id="myinputfield">
<form name="myform" id="myform" action="" method="GET">
  <input type="hidden" name="queryinput" id="queryinput">
  <input type="button" value="Submittal button" onclick="doSubmitForm();" />
</form>
<script type="text/javascript">
  function doSubmitForm(){
    itm1 = document.getElementById('myinputfield');
    itm2 = document.getElementById('queryinput');

    if (!itm1 || !itm2) return false;

    //You could put form input verification here

    itm2.value = itm1.value;
    document.forms["myform"].submit();
  }
</script>