目前有个可编辑div作为发布框,假如用户在网页上粘贴复制,会将html标签一起粘贴到可编辑框里,我想在用户粘贴的时候用js监控粘贴板,先将html标签用正则全部去掉,就是不知道怎么实现,各位知道吗,或者有其它实现方法???

解决方案 »

  1.   

    支持附加的HTML格式本身就是可编辑div提供的高级特性,用以满足TEXTAREA实现不了的功能。既然你不需要,那还不如直接用TEXTAREA来代替DIV。
      

  2.   

    有时也会有Lz这种需求。不过现在好用点的编辑器都有一种叫:粘贴无格式文本的,你可以参考一下就是了
    试试下面的吧。下面的str就是你获取的粘贴板的内容
    var str='<div id=aa>1111</div><div id=bb>222</div>\n\n<div id=cc>3333</div>';
    var re=/<[^>]+>/g;
    str=str.replace(re,"");
    alert(str)
      

  3.   

    我要问的就是怎么获取粘贴板上的,然后将它修改后放到可编辑div里
      

  4.   

    IE核心的好弄,其他浏览器比较难获取剪贴板的内容,默认都不开启js控制剪贴板你可以参考ckeditor的粘贴功能,弹出一个textarea,粘贴内容到textarea中,按确定后将textarea内容粘贴到编辑器中
      

  5.   

    没有人知道具体解决方法吗,我其实就是想做成qq空间发布框的效果,不能用textarea只能用可编辑div,因为表情还是要显示的,但是又要去掉用户粘贴进来的html标签,有谁知道qq空间那样的效果怎么实现的吗???
      

  6.   

    你真是想太多了。你管什么粘贴板做什么。keyup时,执行一次对内容中html标签的替换不就可以呀?
    表情你可以采用与html标签不同的方式。比如类似常见的ubb表情的方式:[face]1[/face]
    这种方式的表情,使用var re=/<[^>]+>/g;
    str=str.replace(re,"");
    这个正则是替换不了的,你只不过是替表情制定一种小规则就行了
      

  7.   

    大哥门阿,我要的就是qq空间的效果,表情就是img标签,如果不明白我要的效果,可以去试试qq空间发布框
      

  8.   


    是你根本没有心思去看我们说的是什么
    var str='<img src="1.gif"/><div id=aa>1111</div><div id=bb>222</div>\n\n<div id=cc>3333</div>';//这个就是你获取到的编辑框的内容
    var re=/<[^img][^>]+>/g;
    str=str.replace(re,"");//这个就是去除了除img标签以外的所有html标签后的编辑框内容
    alert(str)
    在你那个编辑框的onkeyup中绑定以上事件,将得到的str再写回编辑框即可
      

  9.   


    好吧,其实这个我也想过,还有要保存的不只是img标签,还有其它的标签,现在就是我那个正则的取非不会,
    假如现在我要将不是div,span,b,p,img,标签的全部去了,不知道正则表达式应该怎么写呢?
    我之前写的replace(/[^b^p^span]/g,"")关键是这个^span   不是对整体的取非,s标签也会保留,
    就看你var re=/<[^img][^>]+>/g; <i src="">这个就不能被去掉
      

  10.   

    负向查找即可
       var str = '<img src="1.gif"/><div id=aa>1111</div><div id=bb>222</div>\n\n<div id=cc>3333</div><b>coding123.net</b><ul><li>编程设计网</li></ul>';
        var re = /<(?!(\/?div|\/?span|\/?b|\/?p|\/?img))[^>]+>/ig; //要保留其他标签修改这里
        str=str.replace(re,"");
        alert(str)
      

  11.   

    QQ空间是只把粘贴过来的一切HTML标签去掉,保留编辑框原有的标签跟内容,而不是指定保留哪个HTML标签
      

  12.   

    终于找到实现方法了。
    先写一个TEXTAREA,然后将剪切板的内容拷贝到 文本域里面,再追加过去。。$(".lwork_mes").on($.browser.msie?"beforepaste":"paste",function(e){
           var _this = $(this); 
           $("#pasteTextarea").focus();       
           setTimeout(function(){ 
              _this.html(_this.html() + '<pre>' + $("#pasteTextarea").val()+ '/<pre>');  
              _this.focus();  
             $("#pasteTextarea").val('');
           },0); 
    });