1

我有一个 ajaxmodalpop,它有一些控件,如下所示;问题是每当我在文本框上按“Enter”键时,它会将焦点设置在按钮上(这是正确的),但是如果我非常快速地按五六次(或多次)“Enter 键”,那么按钮会触发与我一样多次按下回车键。 虽然我在客户端单击按钮时有一个验证功能,但它不能(如果文本框值被清除,甚至无法通过验证功能)每隔一次传递该功能。因为我从服务器端清除了文本框值。

非常紧急,亲爱的专家

<asp:TextBox ID="txtPurpose" runat="server" TabIndex="4" Width="558px" Style="text-transform: uppercase; overflow: hidden" CssClass="textleftWithBorder" ClientIDMode="Static" onkeydown="ConvertEnterToTab(event)">/asp:TextBox> 
<asp:Button runat="server" ID="btnSubmitNAdd" TabIndex="5" Text="Submit & Add" ClientIDMode="Static" UseSubmitBehavior="true" onkeydown="HandleLeftRightArrow(event,'btnClose','btnSubmitAndClose')"                  OnClick="btnSubmitNAdd_Click" OnClientClick="return Validate()" />

和功能是;

    function ConvertEnterToTab(e) {
        var keyCode = e.keyCode || e.htmlEvent.keyCode;
        if (keyCode === 13) {
            var nextElement = document.getElementById("btnSubmitNAdd");
            if (nextElement != undefined) {
                nextElement.focus();
                e.cancelBubble = true;
                e.returnValue = false;
                return false;
            }
        }
    }

  function Validate() {
        if (ValueOf("txtCustomerName") != _CustomerResetText) {               
                return true;
            }
            else {                    
                return false;
            }           
    }

  function HandleLeftRightArrow(event, leftControl, rightControl) {
        var code = (event.keyCode ? event.keyCode : event.which);
        if (code == 39) {
            if (document.getElementById(leftControl).disabled == false)
                SetControlFocus(rightControl);
        }
        else if (code == 37) {
            if (document.getElementById(rightControl).disabled == false)
                SetControlFocus(leftControl);
        }
    }
4

1 回答 1

0

如果按钮在单击时通过验证,则应禁用该按钮。

UseSubmitBehavior="false" OnClientClick="if(Validate()){this.disabled=true;}"
于 2013-02-19T11:06:58.430 回答