• Javascript和jquery事件--键盘事件KeyboardEvent


    Js和jq事件—键盘事件KeyboardEvent

    键盘事件keydown,keypress和keyup,还需要涉及到一个文本事件textInput。

    keydown,keypress和keyup事件在js和jq中都支持。但是你想要触发这三个事件,必须有文本输入操作(该元素是,或者包含的子元素是文本输入元素—通过冒泡触发)。

    三个事件的触发顺序是按下键盘会触发keydown,keypress,如果按着键盘不放则会反复触发这两个事件,当放开键盘的时候触发keyup。对于键盘上每个按键,这三个事件都是单独存在的,都需要一个keyup来结束这系列事件。

    关于ctrl键,shift键,alt键,meta键,在键盘事件中也有对应的altKey, ctrlKey, metaKey, shiftKey。它们按下时不会触发keypress事件,每一次按下(不管按多久)放开,都只会触发一次keydown一次keyup。它们的按键名称分别是

      Shift-Process(谷歌中keydown时显示)/Shift,Ctrol—Control/Control,Alt—Alt/Alt。

    使用监听器绑定,关注事件中包含的属性如下:

      key是指按键名称,如a,b,c,d,e

      keyCode是指按键码,在keyup和keydown阶段显示的是按键码a-65,b-66....,在keypress阶段谷歌会显示ascii码,火狐为0

      charCode是指字符码,在keyup和keydown阶段显示的是0,在keypress阶段会显示ascii码

      which在keyup和keydown阶段显示的是按键码a-65,b-66....,在keypress阶段会显示ascii码

      altKey, ctrlKey, metaKey, shiftKey

    <!DOCTYPE html>  
    <html lang="zh-cn">  
        <head>  
            <meta charset="UTF-8"/>  
            <script src='js/jquery-3.3.1.min.js'></script>
            <style>
                
            </style>
        </head>  
        <body> 
            <input type='text' id="c1"></input>
            <input type='text' id="c2"></input>
            
            <script type="text/javascript"> 
                //********显示事件的内容
                function showit(e){
                    var e = e||window.event||event;
                    //console.log(e);
    
                    console.log(e.type);
                    console.log(e.key);//按键a,b
                    console.log(e.keyCode);//在keyup和keydown阶段显示的是按键码a-65,b-66....,在keypress阶段谷歌会显示ascii码,火狐为0
                    console.log(e.charCode);//在keyup和keydown阶段显示的是0,在keypress阶段会显示ascii码
                    console.log(e.which);//在keyup和keydown阶段显示的是按键码a-65,b-66....,在keypress阶段会显示ascii码
                    
                    
                }
                //********js
                document.getElementById('c1').onkeypress=showit;
                document.getElementById('c1').addEventListener('keyup',showit);
                document.getElementById('c1').addEventListener('keydown',showit);    
                //*********jquery
                $('#c2').keypress(showit);
                $('#c2').on('keydown',showit);
                $('#c2').keyup(showit);
    
            
            </script>  
        </body>  
    </html>  

    textInput事件(DOM3事件)

      用户在可编辑区域中输入字符时,就会触发这个事件。

      textInput用来代替keypress,二者区别:

        任何可以获得焦点的元素都可以触发keypress事件,但只有可编辑区域才能触发textInput事件。

        textInput事件只会在用户按下能够输入实际字符的键时才会触发,而keypress事件则在按下那些能够影响文本显示的键时也会触发(比如退格键)。

      data属性

         textInput事件主要考虑的是字符,因此它的event对象中还包含一个data属性,data值为用户输入的字符。

      用户按下S键,data值就是“s”

      用户按下上档键时按下S键,data值就是"S"

    EventUtil.addHandler(textbox,"textInput",function(event){
    
        event=EventUtil.getEvent(event);
    
        console.log(event.data);
    
    }); 

    inputMethod属性

      另外,event对象上还有一个属性,叫inputMethod,表示文本输入到文本框中的方式。使用这个属性可以确定文本是如何输入到控件中,从而验证其有效性。

        0,表示浏览器不确定是怎么输入的

        1,表示是使用键盘输入的

        2,表示文本是粘贴进来的

        3,表示文本是拖放进来的

        4,表示文本是使用IME输入的

        5,表示文本是通过在表单中选择某一项输入的

        6,表示文本是通过手写输入的(比如使用手写笔)

        7,表示文本是通过语音输入的

        8,表示文本是通过集中方法组合输入的

        9,表示文本是通过脚本输入的

    兼容性:支持textInput属性的浏览器有IE9+,Safari和Chrome,只有IE支持inputMethod属性。

    参考:

    http://www.jxbh.cn/article/1847.html

    https://www.cnblogs.com/starof/p/6558581.html

    当你深入了解,你就会发现世界如此广袤,而你对世界的了解则是如此浅薄,请永远保持谦卑的态度。
  • 相关阅读:
    http://www.cnblogs.com/fengyin/archive/2011/01/18/1938628.html 前端优化
    iframe中子父窗口互调的js方法
    Mydomain操作说明
    Struts中出现DispatchMapping[***] does not define a handler property 的解决办法
    MyEclipse 不编译了,无论怎么更改保存, classes目录下都是空的.
    checkstyle配置文件说明
    SQLite学习手册(数据类型)
    动态加载datagrid控件的一个问题
    sharepoint
    VS.net 的一个bug
  • 原文地址:https://www.cnblogs.com/liwxmyself/p/10255535.html
Copyright © 2020-2023  润新知