如何为ENTER键设置默认按钮

本文关键字:设置 默认按钮 ENTER | 更新日期: 2023-09-27 18:29:53

我们使用的是Sharepoint 2007,在主页面上我们有Asp Image按钮。我们想把这个图像按钮设置为回车键的默认按钮。我们尝试了一些方法,但没有成功。

如何为ENTER键设置默认按钮

结果比我想象的要复杂,但仍然有可能。首先,确保控件的ID是静态的:

<asp:ImageButton runat="server" ID="MyImageButton" ClientIDMode="Static" ImageUrl="pic.gif" OnClick="ImageButtonClicked"  />

现在,您需要的是.aspx.master页面中的以下JavaScript代码:

<script type="text/javascript">
    var DEFAULT_BUTTON_ID = "MyImageButton";
    // Mozilla, Opera and webkit nightlies currently support this event
    if (document.addEventListener) {
        // A fallback to window.onload, that will always work
        window.addEventListener("load", HandleDefaultButton, false);
        // If IE event model is used
    } else if (document.attachEvent) {
        // A fallback to window.onload, that will always work
        window.attachEvent("onload", HandleDefaultButton);
    }
    function HandleDefaultButton() {
        var inputs = document.getElementsByTagName("input");
        //attach event for all inputs
        for (var i = 0; i < inputs.length; i++) {
            var input = inputs[i];
            //maybe already got handler so add instead of override
            if (document.addEventListener)
                input.addEventListener("keypress", InputElement_KeyPressed, false);
            else if (document.attachEvent)
                input.attachEvent("onkeypress", InputElement_KeyPressed);
        }
    }
    function InputElement_KeyPressed(evt) {
        if (DEFAULT_BUTTON_ID && DEFAULT_BUTTON_ID.length > 0) {
            //old IE event module
            if (typeof evt == "undefined" || !evt)
                evt = window.event;
            var keyCode = evt.keyCode || evt.which;
            if (keyCode === 13) {
                var oButton = document.getElementById(DEFAULT_BUTTON_ID);
                if (oButton) {
                    oButton.click();
                    return false;
                } else {
                    alert("---DEBUG--- default button is defined but does not exist (" + DEFAULT_BUTTON_ID + ")");
                }
            }
        }
        return true;
    }
</script>

您只需要将真实ID定义为DEFAULT_BUTTON_ID的值,代码就会自动将按键事件附加到所有输入(文本、复选框和单选框),当按下Enter时,就会单击定义为默认值的按钮。

由于您正在使用SharePoint,这意味着window.onload已经在使用中,因此我们必须添加我们自己的事件,而不是覆盖它。

您可以将DefaultButton属性设置为表单标记中要默认的按钮的id。