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