定制回车响应

本文介绍了一种解决网页中多个文本框回车键绑定不同按钮的方法,通过判断浏览器类型并使用attachEvent或addEventListener实现跨浏览器兼容性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


我们会经常遇到这样的问题:就是一个页面有多个文本框和多个按钮,
当然是只在一个页面下面,也就是只有一个form的情况下。

我经常会做这样的操作:我们想在文本框里输入对应的值之后
然后按回车就会有相应的按钮来对应事件的触发。

比如说:我有两个按钮 ID 分别为  btn_one ,btn_two,
同时有连个文本框 ID 分别为 txt_one, txt_two 与之相对应。

当我在 txt_one 输入值后我按回车要求触发 btn_one,

当我在 txt_two 输入值后我按回车要求触发 btn_two,

但是一个页面在加载的后默认submit始终只有一个 (btn_one),

当我不管在哪个文本框输入值之后按回车,相应的事件始终都是 btn_one;

同时又考虑到浏览器的兼容性 想了很多方法最终通过以下方法解决了这个问题:

<script type="text/javascript">

 if (document.all)//用来判断当前是否是ie浏览器
 {
    //attachEvent 方法,为某一事件附加其它的处理事件(不支持Mozilla系列)
    //onkeydown 用来捕获键盘的输入

    document.getElementById("txt_one").attachEvent("onkeydown", submitEventOne); 
    document.getElementById("txt_two").attachEvent("onkeydown", submitEventTwo);
    //document.getElementById("<% =txt_one.ClientID %>").attachEvent("onkeydown", submitEventOne);//当文本框是服务端控件时 

 }
 else
 {
    //addEventListener 方法,为某一事件附加其它的处理事件(支持Mozilla系列) 
    document.getElementById("txt_one").addEventListener("keydown", submitEventOne, false);
    document.getElementById("txt_two").addEventListener("keydown", submitEventTwo,false); 
    //document.getElementByID("<%=txt_one.ClientID%>").addEventListener("keydown",sumitEventOne,false)
 }

 function submitEventOne(ex) //ex == window.event (因在firefox下不支持event对象)
 {
    if (ex.keyCode != "13")//判断是否是 enter
       {
         
         if (!document.all)
          {
            ex.preventDefault();
           //该方法将通知 Web 浏览器不要执行与事件关联的默认动作(firefox 支持)
          }
         else
          {
            ex.cancelBubble = true;
           //该方法将通知 Web 浏览器不要执行与事件关联的默认动作(ie 支持)
          }
       }
     else
     {
        document.getElementById("<%=btn_one.ClientID %>").click();//客户端控件同理
     } 

     return false;
 }


 function submitEventTwo(ex) //ex == window.event (因在firefox下不支持event对象)
 {
    if (ex.keyCode != "13")//判断是否是 enter
       {
         
         if (!document.all)
          {
            ex.preventDefault();
          }
         else
          {
            ex.cancelBubble = true;
          }
       }
     else
     {
        document.getElementById("<%=btn_Two.ClientID %>").click();
     } 

    return false;
 }
</script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值