单击asp.net中的退出按钮时,文本框onblur事件未触发

时间:2012-04-18 11:53:58

标签: javascript asp.net textbox onblur

我有一个modelpopup扩展器,在一个文本框和两个asp.net按钮(保存,退出),textbox我写了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>

1 个答案:

答案 0 :(得分:1)

代码正在按预期工作,因为只要TextBox失去焦点就会调用onblur。我建议在不同的地方调用CheckUserId() - 可能是在点击按钮时 - 而不是TextBox onblur。

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

<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>