我在页面上有3个TextBox,3个Button,每个Button分别执行不同的动作。我们现在想在TextBox中检测是否按下了回车键,如果是则执行不同的Button调用。即TextBox1中按下回车就执行Button1的动作,...... 
我从网上找来的是这种写法。但是我自己试验发现页面都响应的是button1的事件。由于button1是页面上的第一个按钮控件,我在页面上任意地方按回车都会导致该事件的发生。我现在怎么真的做到上面一段提到的功能。另外怎么不让在页面任意地方按回车就响应button1  
<script language="javascript" event="onkeydown" for="TextBox1">
      
   if(event.keyCode==13)<!-- 注意大小写-->
   {
    __doPostBack('Button1','');
    return false;<!--很重要,不然会选择Button1进行提交  -->
   }
   
  </script>
  <script language="javascript" event="onkeydown" for="TextBox2">      
   if(event.keyCode==13)
   {
    __doPostBack('Button2','');
    return false;<!--很重要,不然会选择Button1进行提交  -->
   }
   
  </script>
  <script language="javascript">
    function keypress()
    {
     if(event.keyCode==13)
   {
      
    __doPostBack('Button3','');
    event.keyCode=0; <!--很重要,不然会选择Button1进行提交  -->
    return false;<!--很重要,不然会选择Button1进行提交  -->
   }
    }
  </script>

解决方案 »

  1.   

    <script language="javascript">
    document.onkeydown=onkeydownEventHandler;
    function onkeydownEventHandler()
    {
    var obj=event.srcElement;
    if (obj.tagName.toLowerCase()=="input")
    {
    if(event.keyCode==13)
    {
    var buttonid=obj.id.replace('Text','Button');  //注意区分大小写
    __doPostBack(buttonid,'');
    }
    }
    else
    event.keyCode=0;
    }
    </script>
      

  2.   

    小改一下就OK了
     if(event.srcElement.type != 'button' && event.srcElement.type != 'textarea'
           && event.keyCode == 13)
      

  3.   

    我的JS是把整个页面的onkeydown提交给自定义的onkeydownEventHandler函数处理
    var obj=event.srcElement;得到当前焦点的对象,可以为TextBox,Button,及其他
    obj.tagName.toLowerCase()得到当前焦点的类型
    判断类型是否为文本框的如不是发出event.keyCode=0;即不执行页面的onkeydown事件
    如是判断是否在此焦点内有回车事件(event.keyCode==13)如是通过当前焦点的ID得到按钮的ID(var buttonid=obj.id.replace('Text','Button');)
    用__doPostBack(buttonid,'');提交按钮事件
      

  4.   

    楼主的问题偶也遇到过可以解决的,你在textbox中响应button2的事件时需要屏蔽其它的回车事件
      

  5.   

    回答过的人都进来说说清楚啊.我现在用的都是web控件.都不行,换成html控件就可以了.这个有区别吗.但是我不想用html控件,最好都用web控件.大家来帮忙啊