Не работает колбек-функция
Смысл кода в том, чтобы при пропадании фокуса текст из текстового поля сохранялся на сервере. tarea должен быть jQuery-плагином
jQuery.fn.tarea = function(options) { return this.each(function() { var $textarea = $(this); $textarea.on('blur', function (e) { ... options.callback(e, $textarea.val()); }); }); }; $("#myForm textarea").tarea({ ... callback: function(e, value) { $.ajax({ 'url': 'action.php', 'data': {'text': value, 'id': $(e.target).data('id')} }); }); }); Почему-то не работает. И ошибки никакой не вылазит, главное. Так хоть делаю? |
Нашел ошибку. Пропустил запятую в списке параметров. Странно, что интерпретатор не ругался. Тем не менее и теперь не работает т.к. callback-функция передается только один раз. В остальных случаях пустота (хотя статичные параметры передаются), т.е. ф-я работать будет только в первом textarea... а надо во всех.
|
Проблема решена! Но не полностью. У меня такой код: http://jsfiddle.net/nJX5g/3/
Т.е. я генерировал новое поле и сразу же привязывал к нему tarea. И конечно, когда добавил callback, забыл его прописать в месте генерации новых полей. Как сделать так, чтобы tarea работала для любых полей, в т.ч. и вновь созданных без дублирования кода в нескольких местах? |
|
Эм... Нельзя делать текстовые поля статическими, т.к. они добавляются исходя из данных, полученных аяксом. И даже нельзя слушать <div id="ta">, т.к. не факт, что у нас всегда будет логика с $textarea.on('blur', function (e)... Т.е. в плагине, вообще может не быть обработчиков пользовательских действий.
Можно вопрос свести к простому, как в JS отловить изменения в DOMе в заданном контейнере? Или даже во всем документе. |
У вас callback функция не срабатывала для нескольких textarea. Я поправил это. О чем вы пишите дальше, непонятно
|
Все правильно сделали! Спасибо большое! Это я уже отошел от темы, нашлись просто более глубинные проблемы. Создам отдельную тему для них
|
Часовой пояс GMT +3, время: 21:41. |