【WebForm】编程点滴:由文本框回车触发按钮点击事件想到的

在WebFomr中我们常常会需要实现这样一个功能:文本框回车时触发触发其他按钮的click事件。在JS中我们常常这样做:

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
    <script type="text/javascript">
        function onSubmit(e) {
            if (e.keyCode == 13 || e.which == 13) {
                document.getElementById("btnSearch").click();
            }
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <input type="text" id="txtName" runat="server" onkeydown="onSubmit(event)"/>
            <input type="button" value="Search" id="btnSearch" runat="server" onserverclick="btnSearch_ServerClick"  />
        </div>
    </form>
</body>
</html>

注:以上代码在IE11和火狐中测试通过(希望大家踊跃拍砖提供给我更好的方案,不胜感激!)

考虑到JS的兼容性问题,我们常常这么干:

aspx
<input type="text" id="txtName" runat="server" onserverchange="txtName_ServerChange" />

aspx.cs
protected void btnSearch_ServerClick(object sender, EventArgs e)
{
    Response.Write("<script>alert(触发了点击事件)</script>");
}
protected void txtName_ServerChange(object sender, EventArgs e)
{
    btnSearch_ServerClick(btnSearch,new EventArgs());
    //Write your own logic
}

其实更简单地我们这样做:

<input type="text" id="txtName" runat="server" onserverchange="btnSearch_ServerClick" />

其实就是文本框文本改变时事件和按钮点击事件共用一个实现。这其实就是不同的事件共用一个实现。还蛮有用的,很多时候。

当然在一个控件的事件里调用另一个控件事件的实现也是一种很灵活的编码。因为你不仅可以调用其它控件的实现类似的功能。这其实也是代码复用的一种特殊形式了。而且针对控件本身你还可以有自己的逻辑。比如上面的文本框的txtName_ServerChange事件里边,你可以直接调用按钮的点击事件。同时你也可以写其它的逻辑实现。这算不是算是一种代码重构呢?呵呵,一点小小的编程感悟,不是很成熟,希望大家给我意见。

【WebForm】编程点滴:由文本框回车触发按钮点击事件想到的,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。