我有数据库,目前在表格中使用内联编辑 第一个问题是使用格式化文本的粘贴,但看起来,使用此脚本将问题修复为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>
该脚本删除标签,但保留
,导致我的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(" "," ");
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(" "," ");
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(" "," ");
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;
}
}
但没什么
答案 0 :(得分:1)
该脚本删除标签,但保留
,导致我的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");
}
});
}