如何解决页面中的回车焦点事件

公司项目里面一直遗留的一个问题:“网页的头部分是个控件PageHead,里面包含有个文本框txtKeyword和搜索按钮imgbtnGo,这是为了客户好在任何时候任何页面可以去搜索产品设计的,还一个功能就是当客户直接在该文本框中输入关键字后回车的时候就响应的是后面的搜索按钮的事件,这个单独的实现我相信谁都没有问题,但是现在是有的页面例如登录页面吧,也有文本框要输入用户名txtUname和密码txtPwd,也有登陆按钮btnLogin的事件,我们也要设计这个里面输入用户名和密码后回车响应的是后面的登陆按钮的事件,这样一来就有冲突了呀,到底在一个页面是响应哪个按钮呢,我试过是响应的头部分控件中的搜索按钮的事件,随便你怎么输入用户名和密码,针对这个问题我们一直都在找个好的解决方案,经过我在工作之余的研究,总算试出了一种比较令人满意的方法:
先是在PageHead里面写个javascript的函数用来验证这个里面的txtKeyword是否为空:
<script language="javascript" type="text/javascript">
function CheckNull()
 {
     if(document.getElementById('<%= txtKeyword.ClientID %>').value=="")
     {
         alert("您必须输入你要搜索的产品关键字, 谢谢!");
         document.getElementById("<%= txtKeyword.ClientID %>").focus();
         return false;
     }
     else
     {
         return true;
     }
 }
</script>
然后在按钮的属性里面加上 OnClientClick="javascript: return CheckNull()
 <asp:ImageButton ID="imgbtnGo" ImageUrl="../images/PageHead/GO.gif" runat="server" OnClientClick="javascript: return CheckNull()"></asp:ImageButton>
然后在服务器端PageLoad的时候给文本框txtKeyword注册一个事件:
 txtKeyword.Attributes.Add("onkeydown", "if(event.keyCode==13){document.all." + imgbtnGo.ClientID + ".focus();event.keyCode=13;event.keyCode=13;return true;}");
就这样头部分PageHead控件的工作就写好了,然后到登录的页面部门中:
第一件事:给每个要输入的文本框如:txtUname和txtPwd在PageLoad的时候注册事件:
 txtUname.Attributes.Add("onkeydown", "if(event.keyCode==13){document.all." + btnLogin.ClientID + ".focus();event.keyCode=13;event.keyCode=13;return true;}");
 txtPwd.Attributes.Add("onkeydown", "if(event.keyCode==13){document.all." + btnLogin.ClientID + ".focus();event.keyCode=13;event.keyCode=13;return true;}");
然后在客户端写javascript:
<script language="javascript" type="text/javascript">
ContractedBlock.gif ExpandedBlockStart.gif
 1None.giffunction document.onkeydown()
 2ExpandedBlockStart.gifContractedBlock.gif                dot.gif{      
 3InBlock.gif                    if(event.keyCode==13)  //响应回车事件
 4ExpandedSubBlockStart.gifContractedSubBlock.gif                    dot.gif{     
 5InBlock.gif                        if(event.srcElement.name=="<%= txtUid.ClientID %>"//得到事件源的id是不是我们预期中的id,若是将回车事件叫给下面的按钮来做,
 6InBlock.gif                        //若不是就响应PageHead控件里头的按钮事件,这个event在上次有介绍过的
 7ExpandedSubBlockStart.gifContractedSubBlock.gif                            dot.gif{                          
 8InBlock.gif                               document.getElementById("<%= btnLogin.ClientID %>").click();
 9InBlock.gif                               return false;   
10ExpandedSubBlockEnd.gif                            }

11InBlock.gif                            else if(document.getElementById("PageHead1_txtKeyword").value!="")
12ExpandedSubBlockStart.gifContractedSubBlock.gif                            dot.gif{
13InBlock.gif                                document.getElementById("PageHead1_imgbtnGo").click();       
14InBlock.gif                                return false;
15ExpandedSubBlockEnd.gif                            }
   
16InBlock.gif                            else
17ExpandedSubBlockStart.gifContractedSubBlock.gif                            dot.gif{   
18InBlock.gif                                return false;
19ExpandedSubBlockEnd.gif                            }
                            
20ExpandedSubBlockEnd.gif                    }

21ExpandedBlockEnd.gif                }

22None.gif
         
下面这个js就是判断用户输入的用户名和密码不能为空的:

ContractedBlock.gif ExpandedBlockStart.gif
 1None.gif function CheckTxt()
 2ExpandedBlockStart.gifContractedBlock.gif                dot.gif
 3InBlock.gif                   if( document.getElementById("<%= txtUid.ClientID %>").value ==""||document.getElementById("<%= txtPwd.ClientID %>").value =="")
 4ExpandedSubBlockStart.gifContractedSubBlock.gif                   dot.gif{
 5InBlock.gif                      alert("请输入用户名和密码");
 6InBlock.gif                      document.getElementById("<%= txtUid.ClientID %>").focus();   
 7InBlock.gif                      return false;
 8ExpandedSubBlockEnd.gif                   }

 9InBlock.gif                   else
10ExpandedSubBlockStart.gifContractedSubBlock.gif                   dot.gif{
11InBlock.gif                   return true;
12ExpandedSubBlockEnd.gif                   }

13ExpandedBlockEnd.gif                }
然后在登录按钮的里面写下响应上面的CheckTxt函数就好了:
<asp:ImageButton ID="btnLogin" runat="server" Width="55" Height="49" ImageUrl="../images/login/btn_login_L.gif"
                                               OnClientClick="javascript:return CheckTxt()"  TabIndex="3" OnClick="btnLogin_Click">

这样就可以来控制我们的回车了,我们把鼠标放在输入用户名和密码的文本框里面敲回车的话响应的是登陆的按钮事件,我们把鼠标放在头部分的搜索关键字的文本框里面敲回车就是响应的PageHead控件的搜索事件,终于解决了这个问题,从此页面上那个bug应该可以消失了, emsmile.gif

转载于:https://www.cnblogs.com/hzuIT/articles/832391.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值