改变select元素原来的事件属性,并加快捷键

本文介绍了一种使用JavaScript自定义事件处理的方法,包括如何屏蔽HTML元素原有的事件,并创建新的事件处理逻辑,例如通过键盘按键控制下拉菜单选择及将选择结果附加到文本框。
Js代码  收藏代码
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">  
  2. <HTML>  
  3.  <HEAD>  
  4.   <TITLE> New Document </TITLE>  
  5.   <META NAME="Generator" CONTENT="EditPlus">  
  6.   <META NAME="Author" CONTENT="">  
  7.   <META NAME="Keywords" CONTENT="">  
  8.   <META NAME="Description" CONTENT="">  
  9.   <meta http-equiv="Content-Type" content="text/html; charset=gb2312">   
  10. <script language="javascript">  
  11.     //将选择的select元素的值追加到输入框中原来数据的后面  
  12. function connectSex(){  
  13.     var sexTextObj=document.form1.sexText;  
  14.     var sexObj=document.form1.sex;  
  15.     var sexValue=sexObj.options[sexObj.selectedIndex].value;  
  16.     if(sexTextObj.value=="" || sexTextObj.value==null){  
  17.         sexTextObj.value=sexValue;  
  18.         }else{  
  19.             sexTextObj.value=sexTextObj.value+"、"+sexValue;  
  20.             }  
  21.     }  
  22.   
  23. //目的在于学习如何屏蔽HTML元素原来已经有的事件,建立新的事件  
  24. function selectEvent(){  
  25.     if(event.keyCode==38 ||event.keyCode==40){  
  26.         //使HTML元素原来默认的事件失效  
  27.           event.returnValue=false;   
  28.             var selectObj=document.form1.sex;  
  29.         var currentIndex=selectObj.selectedIndex;  
  30.           //如果是上键:只是选中  
  31.           if(event.keyCode==38 ){  
  32.             //alert("上键--"+currentIndex);  
  33.             if(currentIndex==0){  
  34.                 return false;  
  35.                 }else{  
  36.                     selectObj.options[currentIndex-1].selected=true;  
  37.                     return;  
  38.                     }             
  39.             }  
  40.            //如果是下键  
  41.           if(event.keyCode==40 ){  
  42.                 //alert("下键--"+currentIndex+"selectObj.options.length:"+selectObj.options.length);  
  43.             if(currentIndex==selectObj.options.length-1){  
  44.                 return false;  
  45.                 }else{  
  46.                     selectObj.options[1].selected=true;  
  47.                     return ;  
  48.                     }             
  49.             }  
  50.         }  
  51.         //如果是空格键,则把选中的内容添加文本域中  
  52.         if(event.keyCode==32){  
  53.             connectSex();  
  54.             }  
  55.     }  
  56.     </script>  
  57.  </HEAD>  
  58.   
  59.  <BODY>  
  60.   <form method="post" name="form1" action="">  
  61.    <input type="text" name="text1" value="text1"/>  
  62.    <input type="text" name="text2" value="text2"/><br/>  
  63.    <select name="sex" onChange="connectSex()" onkeydown="selectEvent()">  
  64.     <option value="girl">女</option>       
  65.     <option value="boy">男</option>  
  66.   </select>  
  67.     <!--Tab键会自动跳过hidden类的控件-->  
  68.    <input type="hidden" name="text3" value="text3">  
  69.    <input type="text" name="sexText" value=""/>  
  70.      
  71.   </form>  
  72.  </BODY>  
  73. </HTML>  
 

select 元素的onmousewheel事件即滚轮转时的事件会改变当前选项,并触发onChange事件,通过onmousewheel="return false;" 来屏蔽此事件.

onkeydown是给select 元素加快捷键,上、下键改变当前的选项,按回车将select的值插入一文本域,代码如下。

Html代码  收藏代码
  1. <select name="commonNativeLanguage" style="width:150px"  
  2. onkeydown="selectEvent('commonNativeLanguage')"  
  3. onChange="connectTextLangueCommonNative()"  
  4. onmousewheel="return false;">  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值