例如:
我需要屏蔽用户在中文输入法下向一个文本框输入“》”(即中文输入法下的书名号)
也就是屏蔽中文输入法下  shift组合>event.keyCode只能获取英文字符的>键为62也就是如何获取当前输入的是》,而不是>呢?

解决方案 »

  1.   

    那你就这样,如果碰到evt.keycode == 62的直接
    if(evt.keyCode == 62)
    {
        evt.keycode = 0;
        evt.stop(evt);
        str+= "<"; //然后自己做字符串处理 }
      

  2.   

    keypress的时候,应该不行吧
    keyup的时候,input的value就能获取录入的值例如》这个中文的书名号,此时可以和你要屏蔽的字符进行比较了。
      

  3.   

    不用这么麻烦吧,屏蔽一个字符而已,onkeyup的时候,replace一下就行了
    <input type="text" value="" onkeyup="this.value=this.value.replace(/》/g,'');">
      

  4.   

    keypress的时候有什么好办法吗?
    用keyup总有些不妥,因为实际上是输入了,只是后来又屏蔽了。
    最好的做法应该是在录入的时候即keypress的时候就屏蔽。
      

  5.   

    用onkeydown是做不到的,在该事件发生时,浏览器还没有获取输入的字符,只是捕获了按下的键而已
    用onkeyup的确不太好,如果按住不松,字符就永远去不掉
    想个折中的办法,利用onpropertychange事件,当值有所改变时,重新赋值,对于用户而言,是看不出来的
    <input type="text" value="" onpropertychange="if(this.value!=this.value.replace(/》/g,''))this.value=this.value.replace(/》/g,'');">
      

  6.   

    LS正解 不过onpropertychange只兼容于IE
    其他的浏览器要用oninput事件