#jquery #jquery-plugins #jeditable
#jquery #jquery-плагины #jeditable
Вопрос:
Использование jQuery плагина jEditable. Проблема, с которой я сталкиваюсь, заключается в том, что я хочу, чтобы все, что доступно для редактирования, отображало текст вместо html после запуска события jEditable.
Например, если у меня есть элемент <span class="editable">Jack amp; Jill</span>
, когда я нажимаю на него, я получаю Jack amp;amp; Jill
, но то, что я хочу Jack amp; Jill
, — это мое значение во входных данных, чтобы пользователь не видел HTML.
Должно быть что-то, что я могу сделать с настройкой данных [возможно, value.replace(); или что-то в этом роде]. Прямо сейчас я просто возвращаю значение.
код
$('.editable').each(function() {
$(this).editable('url', {
data: function(value, settings) {
var retval = value;
return retval;
}
});
});
Ответ №1:
Когда вы визуализируете страницу с помощью php, похоже, что вы используете htmlspecialchars() или аналогичный для перевода amp; в его эквивалент html-объекта amp;amp;
.
Поэтому, когда вы редактируете его, вместо загрузки информации из элемента на странице, вам нужно загрузить ее из вызова 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. Работает. Я сделал htmlspecialchars_decode при загрузке данных.
Ответ №2:
Можете попробовать это:
'data': function (value, config) {
console.log(value);
var v = $('<p></p>').html(value).text();
return v;
},