在contenteditable div中输入粘贴的jquery

时间:2015-09-18 07:32:09

标签: javascript jquery html internet-explorer

在我的html页面中有一个contenteditable div作为textarea:

    def show(){
    System.out.println "=== Activity ===";
    def data = []
    def job = Dailyjob.get(params.id as Long);

    //preparing max and offset from params
    Integer max = params.max ? params.int("max") : 10
    Integer offset = params.offset ? params.int("offset") : 0

    data = Dailyjobactivity.where { 
        daily_job == job  
    }.list([sort:'activity_datetime', order:'desc', max: max, offset: offset])

    System.out.println "=== Data ==="+data;
    render(view:view_name+'/jobactivity',model:[data:data,instanceTotal:data.size()])
}  

我通过jquery“输入粘贴”

检测用户的输入
<div id="txt" contenteditable="true"></div>

它在chrome中运行良好,但在IE中无效。谁能告诉我发生了什么? 感谢~~

2 个答案:

答案 0 :(得分:1)

IE正在将event.type作为paste

返回
$('#txt').on('input paste',function(event){
   if(event.type=='paste' || event.type=='input'){
       alert("ok"); 
   }  
});

编辑。由于某些原因,我只用粘贴测试。

$('#txt').on('keyup paste',function(event){
   alert("ok"); 
});

答案 1 :(得分:0)

我认为这是IE特有的问题。替代解决方案是使用焦点,键盘事件和模糊事件。您可以比较旧文本和新文本,以查看文本中是否存在更改。

刚刚找到了一个SO线程,给出的答案与我的答案排成一行;以及原始SO线程的链接。

$('#txt').on('focus', function() {
  before = $(this).html();
}).on('blur keyup paste', function() { 
  if (before != $(this).html()) { $(this).trigger('change'); }
});

$('#txt').on('change', function() {alert('changed')});

SO Thread