Я работаю над веб-проектом, используя jQuery и CakePHP. Я использую легкомысленный как плагин для редактирования на месте. Для текстовых полей я расширяю его с помощью плагин autogrow.
Ну, у меня с этим две проблемы:
Я не так хорошо знаком с Javascript, поэтому я не могу самостоятельно расширять / исправлять эти две библиотеки. Кто-нибудь использовал другую js-библиотеку для редактирования на месте с автоматически растущими текстовыми полями (нет полных редакторов, таких как TinyMCE, мне нужно решение для простого текста)?
Я также нашел Growfield, он будет работать для других браузеров, но нет jeditable интеграции ...
(Извините за мой английский)



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я не видел никаких проблем с использованием Autogrow с jeditable в любых браузерах, но вот реализация Growfield с jeditable. Он работает примерно так же, как плагин Autogrow для jeditable. Вы создаете специальный тип ввода для jeditable и просто применяете к нему .growfield (). Необходимый javascript ниже, демо может быть найдено здесь.
<script type = "text/javascript">
/* This is the growfield integration into jeditable
You can use almost any field plugin you'd like if you create an input type for it.
It just needs the "element" function (to create the editable field) and the "plugin"
function which applies the effect to the field. This is very close to the code in the
jquery.jeditable.autogrow.js input type that comes with jeditable.
*/
$.editable.addInputType('growfield', {
element : function(settings, original) {
var textarea = $('<textarea>');
if (settings.rows) {
textarea.attr('rows', settings.rows);
} else {
textarea.height(settings.height);
}
if (settings.cols) {
textarea.attr('cols', settings.cols);
} else {
textarea.width(settings.width);
}
// will execute when textarea is rendered
textarea.ready(function() {
// implement your scroll pane code here
});
$(this).append(textarea);
return(textarea);
},
plugin : function(settings, original) {
// applies the growfield effect to the in-place edit field
$('textarea', this).growfield(settings.growfield);
}
});
/* jeditable initialization */
$(function() {
$('.editable_textarea').editable('postto.html', {
type: "growfield", // tells jeditable to use your growfield input type from above
submit: 'OK', // this and below are optional
tooltip: "Click to edit...",
onblur: "ignore",
growfield: { } // use this to pass options to the growfield that gets created
});
})
Спасибо, Алекс! Ваш плагин Growfield работает. Тем временем мне удалось решить другую проблему. Я взял еще один Свиток-Библиотека и взломал событие обратного вызова в jeditable-plugin. Это было не так сложно, как я думал ...
рыцарь-убийца: Что значит Autogrow работает только с FireFox? Я только что тестировал FF3, FF2, Safari, IE7 и Chrome. Прекрасно работает со всеми из них. У меня не было Opera.
Алекс: Есть ли ссылка для загрузки вашего пользовательского ввода Growfield Jeditable? Я хотел бы добавить ссылку из своего блога. Это действительно здорово!
Мика Туупола: Если вас интересует мой измененный jeditable (добавлены два события обратного вызова), вы можете получи это здесь. Было бы здорово, если бы вы представили эти события в своей официальной версии jeditable!
Вот мой (упрощенный) код интеграции. Я использую события не только для эффекта наведения. Это всего лишь один вариант использования.
$('.edit_memo').editable('/cakephp/efforts/updateValue', {
id : 'data[Effort][id]',
name : 'data[Effort][value]',
type : 'growfield',
cancel : 'Abort',
submit : 'Save',
tooltip : 'click to edit',
indicator : "<span class='save'>saving...</span>",
onblur : 'ignore',
placeholder : '<span class = "hint"><click to edit></span>',
loadurl : '/cakephp/efforts/getValue',
loadtype : 'POST',
loadtext : 'loading...',
width : 447,
onreadytoedit : function(value){
$(this).removeClass('edit_memo_hover'); //remove css hover effect
},
onfinishededit : function(value){
$(this).addClass('edit_memo_hover'); //add css hover effect
}
});
Я точно не знаю, в чем была ошибка ... Я получил javascript-Error в IE7 в Autogrow-Library, когда я щелкнул элемент, который должен быть редактируемым. Texarea показывала, но без автоматического роста. В других браузерах я не получал сообщения об ошибке ...