当按下回车键时,我有一个函数可以通过表单上的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?

10-05 22:27