简体   繁体   English

如何为ENTER键设置默认按钮

[英]How To set Default Button for ENTER key

We are using Sharepoint 2007 In which on master page we have Asp Image button. 我们使用的是Sharepoint 2007 ,其中在母版页上具有“ asp图像”按钮。 We want to set this image button as default button for enter key press. 我们想要将此图像按钮设置为Enter键的默认按钮。 We tried some ways but not getting success. 我们尝试了一些方法,但没有成功。

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

Turned out more complicated than I thought but possible nonetheless. 结果比我想象的要复杂,但仍然可能。 First of all, make sure the ID of your control is static: 首先,请确保您的控件的ID是静态的:

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

Now what you need is the following JavaScript code in your .aspx or .master page: 现在,您需要的是.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>

You just need to define the real ID as the value of DEFAULT_BUTTON_ID and the code will automatically attach keypress event to all inputs (text, checkbox and radio) and when Enter is pressed, the button defined as default will get clicked. 您只需要将真实ID定义为DEFAULT_BUTTON_ID的值,该代码将自动将按键事件附加到所有输入(文本,复选框和单选),并且在按Enter键时,将单击定义为默认值的按钮。

As you're using SharePoint is means window.onload is already in use so we must add our own event not override it. 当您使用SharePoint时,意味着window.onload已在使用中,因此我们必须添加自己的事件,而不要覆盖它。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM