当按下回车键时,我有一个函数可以通过表单上的JS将焦点设置到下一个字段:
function pressEnter(obj, e) {
var key = e.keyCode ? e.keyCode : e.which;
if (key === 13) {
var total = document.forms[0].elements.length;
for (var i = 0; i < total; i++) {
if (obj.id == document.forms[0].elements[i].id) {
index = i + 1;
while ((document.forms[0].elements[index].type == "hidden" || document.forms[0].elements[index].nodeName == "FIELDSET" || document.forms[0].elements[index].disabled == true)) {
index++;
if (document.forms[0].elements[index] == null)
return;
}
$('#' + document.forms[0].elements[index].id).focus();
break;
}
}
}
}
在BODY标记中,我有以下脚本:onkeypress =“var key = event.keyCode?event.keyCode:e.which; return(key!= 13);”,以避免在按下[Enter]时发帖
如果我设置[TextBox1 autoPostBack = false] [TextBox2 autoPostBack = false],则可以正常运行。在TextBox1中输入[输入],TextBox2获得焦点并触发主体的onkeypress事件。
好。
问题来了
如果在textBox2接收焦点时设置[TextBox1 autoPostBack = false] [TextBox2 autoPostBack = true],它将刷新页面,执行发布,并且不触发主体的onkeypress事件。
在TextBox2中未键入任何内容。我希望使用AutoPostBack = true的TextBox在输入值并运行onBlur之前不发布帖子或刷新屏幕。
详细信息,如果按TAB键,仅当通过JS以编程方式设置焦点时,才不会发生此问题。
如果有人可以向我解释原因,我将不胜感激。
Tarsis-Varois
最佳答案
您需要为表单填写<form onsubmit="return false;">
,如下所示:How to prevent ENTER keypress to submit a web form?