博客园 :: 首页 ::  :: 联系 :: 订阅 订阅 :: 管理
现象:今天遇到了同网上这地址http://www.cnblogs.com/baoposhou/archive/2006/12/29/607419.html
         一样的一个问题——同一页面多个文本框,鼠标分别进入后直接回车,提交不同事件问题解决:
    [链接地址内容]今天工作中碰到一个问题,我使用用户控件制作一个搜索框,上面带有一个下接列表及一个文本框
当我把用户控件拖到WebForm上面的时侯,在文本框上随便输入一些文件,直接回车,发现页面是PostBack了,可是并没有引发SearchButton的处理事件。

ascx的源码如下
<DIV align="center">
<asp:dropdownlist id="ddlType" runat="server"></asp:dropdownlist>
<asp:TextBox id="tbxKey" runat="server" Width="105px"></asp:TextBox>&nbsp;
<asp:imagebutton id="imgbtnSearch" runat="server" CausesValidation="False" ImageUrl="~/images/search.gif"></asp:imagebutton>
</DIV>

asp.net是通过ViewState中的数据来判断是哪个Control引发事件,再确定调用的处理方法。以上的问题应该是回车时,页面ViewState里没有正确的指示引发事件的控件引起的。
还有一个问题,就是一个web form页面,如果有多个文本框,多个button,比如,我们一个主页上会有搜索框及搜索button,会员登录框及登录button,最好的实现是用户在搜索框上回车时,提交的是搜索,在会员用户名或密码框上回车时是登录事件。
地球人都知道,用户控件拖到web from上后,用户控件上的控件名称都会发生变化,且一个web from又只能有一个runat server 的Form。
问题:同一页面多个文本框,鼠标分别进入后直接回车,提交不同事件问题解决
分析可以查看这个页面的html源代码文件,可以看到服务器控件一样变成了submit类型的缘故
问题解决:添加如下函数 各文本框调用此
//////////////////
//回车处理事件//
//////////////////

function clickBtn(e)
  {
   if(window.event.keyCode==13)
   {
    var id=e.id;
    switch(id)
    {
     case "txt_phoneNum":
      document.getElementById("img_phoneNum_search").click();//调用手机号码搜索事件
      window.event.returnValue=false;
      break;
     case "txt_SearchName":
      document.getElementById("imgbtn_Search").click();//调用商品名称搜索事件
      window.event.returnValue=false;
      break;
     }
   }
}


标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2008-01-08 21:16 编辑过
"五向定位"职业成长路线公开课(上海、南京、大连)
Google站内搜索


相关链接: