replace()标记在javascript

时间:2017-06-02 13:24:41

标签: javascript php sql ajax database

我有数据库,目前在表格中使用内联编辑 第一个问题是使用格式化文本的粘贴,但看起来,使用此脚本将问题修复为90%:

<script type="text/javascript">

                var _onPaste_StripFormatting_IEPaste = false;

                function OnPaste_StripFormatting(elem, e) {

                    if (e.originalEvent && e.originalEvent.clipboardData && e.originalEvent.clipboardData.getData) {
                        e.preventDefault();
                        var text = e.originalEvent.clipboardData.getData('text/plain');
                        window.document.execCommand('insertText', false, text);
                    }
                    else if (e.clipboardData && e.clipboardData.getData) {
                        e.preventDefault();
                        var text = e.clipboardData.getData('text/plain');
                        window.document.execCommand('insertText', false, text);
                    }
                    else if (window.clipboardData && window.clipboardData.getData) {
                        // Stop stack overflow
                        if (!_onPaste_StripFormatting_IEPaste) {
                            _onPaste_StripFormatting_IEPaste = true;
                            e.preventDefault();
                            window.document.execCommand('ms-pasteTextOnly', false);
                        }
                        _onPaste_StripFormatting_IEPaste = false;
                    }

                }

    </script>

我的PHP代码如下所示:

<td contenteditable='true' onblur=saveToDatabase(this,'titleeng','".$data['id']."') onClick='showEdit(this);' onpaste='OnPaste_StripFormatting(this, event);'>".$data['titleeng']."</td>

该脚本删除标签,但保留&nbsp;,导致我的sql ajax失败

这是Ajax脚本:

<script>
        function showEdit(editableObj) {
            $(editableObj).css("background","#FFF");
        } 

        function saveToDatabase(editableObj,column,id) {
            $(editableObj).css("background","#12ff65 url(loaderIcon.gif) no-repeat right");
            $.ajax({
                url: "saveedit.php",
                type: "POST",
                data:"column="+column+"&editval="+editableObj.innerHTML+"&id="+id,
                success: function(data){
                    $(editableObj).css("background","#FDFDFD");
                }        
           });
        }
        </script>

我正在尝试这个: 新组件为text = text.replace("&nbsp"," ");

var _onPaste_StripFormatting_IEPaste = false;

                function OnPaste_StripFormatting(elem, e) {

                    if (e.originalEvent && e.originalEvent.clipboardData && e.originalEvent.clipboardData.getData) {
                        e.preventDefault();
                        var text = e.originalEvent.clipboardData.getData('text/plain');
                        string text = text;
                        text = text.replace("&nbsp"," ");
                        window.document.execCommand('insertText', false, text);
                    }
                    else if (e.clipboardData && e.clipboardData.getData) {
                        e.preventDefault();
                        var text = e.clipboardData.getData('text/plain');
                        string text = text;
                        text = text.replace("&nbsp"," ");
                        window.document.execCommand('insertText', false, text);
                    }
                    else if (window.clipboardData && window.clipboardData.getData) {
                        // Stop stack overflow
                        if (!_onPaste_StripFormatting_IEPaste) {
                            _onPaste_StripFormatting_IEPaste = true;
                            e.preventDefault();
                            window.document.execCommand('ms-pasteTextOnly', false);
                        }
                        _onPaste_StripFormatting_IEPaste = false;
                    }

                }

但没什么

2 个答案:

答案 0 :(得分:1)

  

该脚本删除标签,但保留&nbsp;,导致我的sql ajax失败

那是因为你忽略了对你在查询字符串中正确插入的参数值进行URL编码。

对之前的值使用encodeURIComponent

答案 1 :(得分:0)

最终问题在于编码,因为CBroe说

这是ajax,它使它工作

function saveToDatabase(editableObj,column,id) {
            $(editableObj).css("background","#12ff65 url(loaderIcon.gif) no-repeat right");
            var editxx = encodeURIComponent(editableObj.innerHTML);
            $.ajax({
                url: "saveedit.php",
                type: "POST",
                data:"column="+column+"&editval="+editxx+"&id="+id,
                success: function(data){
                    $(editableObj).css("background","#FDFDFD");
                }        
           });
        }