使用jQuery插件jEditable。我遇到的问题是,在触发jEditable事件后,我想要任何可编辑的内容来显示文本而不是html。
例如,如果我有一个元素<span class="editable">Jack & Jill</span>
,当我点击它时,我得到Jack & Jill
,但我想要的是Jack & Jill
作为输入中的值,这样用户就不会看不到HTML。
我必须要对数据设置做些事[可能是value.replace();或者其他的东西]。现在我只是让它返回值。
CODE
$('.editable').each(function() {
$(this).editable('url', {
data: function(value, settings) {
var retval = value;
return retval;
}
});
});
答案 0 :(得分:1)
当您使用php渲染页面时,看起来您正在使用htmlspecialchars()或类似的翻译&amp;进入其html实体等效&
。
因此,当您编辑它时,您需要将其从ajax调用加载到您的服务器(它将返回实际的html,而不是通过htmlspecialchars()或任何内容运行它,而不是从页面上的项目加载信息。其他)。
Jeditable为您提供了一个很好的选择,所以尝试类似:
$('.editable').each(function() {
$(this).editable('url', {
loadurl : 'http://www.example.com/returnUntouchedhtml.php',
data: function(value, settings) {
var retval = value;
return retval;
}
});
});
您可以在此页面上找到更多示例/信息:http://www.appelsiini.net/projects/jeditable
答案 1 :(得分:1)
可以试试这个:
'data': function (value, config) {
console.log(value);
var v = $('<p></p>').html(value).text();
return v;
},