我有一个功能,当按下回车键时,通过 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获得焦点,触发body的onkeypress事件。
好的。
问题来了
如果我设置 [TextBox1 autoPostBack=false] [TextBox2 autoPostBack=true] 当 textBox2 接收到焦点时,它会刷新页面,执行 post,并且不会触发 body 的 onkeypress 事件。它没有在 TextBox2 中输入任何内容。我希望带有 AutoPostBack = true 的 TextBox 不会发布帖子或刷新屏幕,直到输入一个值并运行 onBlur。
细节,如果按TAB,这个问题不会发生,只是在通过JS以编程方式设置焦点时。
如果有人可以向我解释原因,我将不胜感激。
塔西斯 - 瓦鲁瓦