zoukankan      html  css  js  c++  java
  • input textarea监听鼠标粘贴

    发现一个问题,在input/textarea中如果是鼠标粘贴内容进去,发现判断不了value的改变,html代码如下:

    <!doctype html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>判断粘贴</title>
    <script type="text/javascript" src="../jquery.js"></script>
    </head>
    <body>
    <textarea name="" id="test" cols="30" rows="10"></textarea>
    </body>
    </html>

    我写的监听方法:(使用了jquery)

    var $test = $('#test');
    $test.on('keyup',function(){
      console.log('keyup__'+this.value);
    })
    .on('mouseup',function(){
      console.log('mouseup__'+this.value);
    })
    ;

    以上方法只能判断键盘的快捷键粘贴 如果是鼠标粘贴就失效了

    后面在网友Amin的帮助下,找到了一个兼容浏览器的方法(详情 http://dramin.duapp.com/?p=112

    主要是通过判断输入状态的改变,类似于onchange,IE9以上 、firefox、chrome等都支持了Html中的oninput事件,而IE6/7/8则可以通过onpropertychange事件来解决,但是IE6/7/8下如果input为disabled则事件无效,IE9+ FF opera11+,该事件用js改变值时不会触发,自动下拉框选值时不会触发,代码如下:

    function bindChangeHandler(input,fun) {
            if("onpropertychange" in input) {//IE6、7、8,属性为disable时不会被触发
                input.onpropertychange = function() {
                    if(window.event.propertyName == "value") {
                        if(fun) {
                            fun.call(this,window.event);
                        }
                    }
                }
            } else {
                //IE9+ FF opera11+,该事件用js改变值时不会触发,自动下拉框选值时不会触发
                input.addEventListener("input",fun,false);
            }
        }
    
        //使用
        bindChangeHandler($test[0],function(){
            alert(this.value);
        });

    问题解决了。

  • 相关阅读:
    文本属性和字体属性
    BZOJ 2724: [Violet 6]蒲公英
    BZOJ4010: [HNOI2015]菜肴制作
    BZOJ 2160: 拉拉队排练
    HDU-5157Harry and magic string
    HDU-5421Victor and String
    BZOJ2565: 最长双回文串(回文树)
    BZOJ3676: [Apio2014]回文串(回文树)
    BZOJ 3195: [Jxoi2012]奇怪的道路(状压dp)
    BZOJ1758: [Wc2010]重建计划(01分数规划+点分治+单调队列)
  • 原文地址:https://www.cnblogs.com/subying/p/input-change.html
Copyright © 2011-2022 走看看