0

我有一个modelpopup扩展器,在那个文本框和两个asp.net按钮(保存,退出),文本框我写了onblur事件(在那个事件文本框中输入的值检查数据库是否有效,无效显示警报消息)现在该条件有效,但是当我单击退出按钮时,我已经处理了 onclick 或 onclientclik 事件(关闭 modelpopup 代码)但现在触发文本框模糊事件验证并显示警报消息,如何解决该问题请给我任何想法那。我的代码是

<asp:TextBox ID="txtForgotUserId" runat="server" ClientIDMode="Static" onblur="CheckUserId()"></asp:TextBox>
<asp:Button ID="btnForgotExit" runat="server" Text="Exit" CssClass="art-button" ClientIDMode="Static" OnClientClick="hidepop()"/>

<script type="text/javascript">
    function hidepop() {
        $find('MpForgot').hide();
        return true;
    }

    function CheckUserId() {
        document.getElementById('btnCheckUserId').click();
    }
</script>
4

1 回答 1

1

代码按预期工作,因为一旦 TextBox 失去焦点就会调用 onblur。我建议CheckUserId()在不同的点调用——也许是在单击按钮时——而不是 TextBox onblur。

如果您必须CheckUserId()在 onblur 期间调用,那么您可以使用这样的计时器:

<asp:TextBox ID="txtForgotUserId" runat="server" 
    ClientIDMode="Static" onblur="startCheckUserIdTimer()"></asp:TextBox>
<asp:Button ID="btnForgotExit" runat="server" Text="Exit" 
    CssClass="art-button" ClientIDMode="Static" OnClientClick="hidepop()"/>

<script type="text/javascript">
    var timer;

    function hidepop() {
        clearTimeout(timer);
        $find('MpForgot').hide();
    }

    function startCheckUserIdTimer() {
        clearTimeout(timer);
        timer = setTimeout("CheckUserId()", 100);
    }

    function CheckUserId() {
        clearTimeout(timer);
        document.getElementById('btnCheckUserId').click();
    }
</script>
于 2012-04-18T13:40:30.960 回答