我有一个包含一些输入字段的HTML表单,其中一个输入字段是搜索字段。当我单击该搜索输入字段旁边的搜索按钮时,会使用ajax从服务器返回搜索结果。我想要的是,在用户聚焦在此特定搜索输入字段并按下回车键时,防止表单提交。顺便说一句,我正在使用AngularJS,因此解决方案可能与JQuery或纯JavaScript方式略有不同。这可行吗?欢迎提供任何建议!
使用以下函数:
function doNothing() {
var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
if( keyCode == 13 ) {
if(!e) var e = window.event;
e.cancelBubble = true;
e.returnValue = false;
if (e.stopPropagation) {
e.stopPropagation();
e.preventDefault();
}
}
<form name="input" action="http://www.google.com" method="get">
<input type="text" onkeydown="doNothing()">
<br><br>
<input type="submit" value="Submit">
</form>
e.preventDefault()
。function clickHandler(e){
e.preventDefault();
}
按钮
代替提交按钮。ng-click="doStuff(); $event.stopPropagation()"
。 - PylinuxWhen you submit form using enter key on particular text fields or submit button(focus).
To prevent form submit twice, we can use both approach
1.
define var isEnterHitOnce=true globally which loaded at the time of form load
on keyPress Event or on submitForm()
if(event.keycode==13 && isEnterHitOnce){
isEnterHitOnce=false;
//Process your code. Sent request to server like submitForm();
}
isEnterHitOnce=false;
2.
disable the field object from where you received the action like
beginning of method in formSubmit()
document.getElementById(objName).disabled=true; // objName would be your fields name like submitButton or userName
//At the end of method or execution completed enable the field
document.getElementById(objName).disabled=false;