为什么按钮onclick会多次触发?

时间:2013-02-19 10:56:56

标签: javascript asp.net javascript-events event-handling

我有一个ajaxmodalpop,它有一些像下面这样的控件;问题是每当我按下文本框上的“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);
        }
    }

1 个答案:

答案 0 :(得分:0)

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

UseSubmitBehavior="false" OnClientClick="if(Validate()){this.disabled=true;}"