3

我有一个功能,当按下回车键时,通过 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以编程方式设置焦点时。

如果有人可以向我解释原因,我将不胜感激。

塔西斯 - 瓦鲁瓦

4

1 回答 1

0

您需要<form onsubmit="return false;">为您的表单提供此处提到的:如何防止 ENTER 按键提交 Web 表单?

于 2011-06-03T19:42:58.490 回答