如何监听textarea内容的变化?

1.onchange不能用。
2.oninput在中文输入法下,一按下就触发了,我想要文本框中内容发生改变时才触发。
3.compositionend与compositionstart这对组合对第一次输入无效(之后有效)

如下代码,当输入第一个汉字的时候不触发,从第二个汉字才开始触发


    function bind (){
        var flag = true;
        $('#querySmartbox').on('compositionstart',function(){
            
            flag = false;
        })
        $('#querySmartbox').on('compositionend',function(){
            
            flag = true;
        })
        $('#querySmartbox').on('input',function(){
            
            setTimeout(function(){
                if(true){
                    //querySmartbox(question)
                    alert($('#querySmartbox').val())
                }
            },100)
        })
    }

网上找了许久没有想要的答案。
多谢!

阅读 10.8k
3 个回答

这里不应该是change吗?,jquery封装成了change事件。

      $('#querySmartbox').on('change',function(){
            setTimeout(function(){
                if(true){
                    //querySmartbox(question)
                    alert($('#querySmartbox').val())
                }
            },100)
      })

你确定 onchange 不能用?那里应该是 change 吧?

1.change事件—触发该事件必须是值改变了,而且当前元素失去焦点
2.keypress 就是只能监听键盘事件,鼠标复制粘贴操作无能为力
3.propertychange(ie) 和 input 事件
input 是标准的浏览器事件,一般应用于input元素,当 input 的 value 发生变化就会触发,无论是键盘输入还是鼠标粘贴的改变都能及时监听到变化。
propertychange 只要当前对象属性发生改变就会触发。(IE专属的)

可以试试下面这样
$("#txt").bind("input propertychange",function(event) {

}

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题