Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.12.2012, 12:50
Профессор
Отправить личное сообщение для Shitbox2 Посмотреть профиль Найти все сообщения от Shitbox2
 
Регистрация: 04.10.2010
Сообщений: 571

Не работает колбек-функция
Смысл кода в том, чтобы при пропадании фокуса текст из текстового поля сохранялся на сервере. 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')}
        });
    });
});

Почему-то не работает. И ошибки никакой не вылазит, главное. Так хоть делаю?

Последний раз редактировалось Shitbox2, 06.12.2012 в 14:22.
Ответить с цитированием
  #2 (permalink)  
Старый 06.12.2012, 14:13
Профессор
Отправить личное сообщение для Shitbox2 Посмотреть профиль Найти все сообщения от Shitbox2
 
Регистрация: 04.10.2010
Сообщений: 571

Нашел ошибку. Пропустил запятую в списке параметров. Странно, что интерпретатор не ругался. Тем не менее и теперь не работает т.к. callback-функция передается только один раз. В остальных случаях пустота (хотя статичные параметры передаются), т.е. ф-я работать будет только в первом textarea... а надо во всех.

Последний раз редактировалось Shitbox2, 06.12.2012 в 14:35.
Ответить с цитированием
  #3 (permalink)  
Старый 06.12.2012, 19:36
Профессор
Отправить личное сообщение для Shitbox2 Посмотреть профиль Найти все сообщения от Shitbox2
 
Регистрация: 04.10.2010
Сообщений: 571

Проблема решена! Но не полностью. У меня такой код: http://jsfiddle.net/nJX5g/3/

Т.е. я генерировал новое поле и сразу же привязывал к нему tarea. И конечно, когда добавил callback, забыл его прописать в месте генерации новых полей. Как сделать так, чтобы tarea работала для любых полей, в т.ч. и вновь созданных без дублирования кода в нескольких местах?
Ответить с цитированием
  #4 (permalink)  
Старый 06.12.2012, 20:12
Профессор
Отправить личное сообщение для zebra Посмотреть профиль Найти все сообщения от zebra
 
Регистрация: 14.09.2011
Сообщений: 523

http://jsfiddle.net/nJX5g/4/
Ответить с цитированием
  #5 (permalink)  
Старый 06.12.2012, 20:40
Профессор
Отправить личное сообщение для Shitbox2 Посмотреть профиль Найти все сообщения от Shitbox2
 
Регистрация: 04.10.2010
Сообщений: 571

Эм... Нельзя делать текстовые поля статическими, т.к. они добавляются исходя из данных, полученных аяксом. И даже нельзя слушать <div id="ta">, т.к. не факт, что у нас всегда будет логика с $textarea.on('blur', function (e)... Т.е. в плагине, вообще может не быть обработчиков пользовательских действий.

Можно вопрос свести к простому, как в JS отловить изменения в DOMе в заданном контейнере? Или даже во всем документе.

Последний раз редактировалось Shitbox2, 06.12.2012 в 20:43.
Ответить с цитированием
  #6 (permalink)  
Старый 06.12.2012, 20:48
Профессор
Отправить личное сообщение для zebra Посмотреть профиль Найти все сообщения от zebra
 
Регистрация: 14.09.2011
Сообщений: 523

У вас callback функция не срабатывала для нескольких textarea. Я поправил это. О чем вы пишите дальше, непонятно
Ответить с цитированием
  #7 (permalink)  
Старый 06.12.2012, 20:56
Профессор
Отправить личное сообщение для Shitbox2 Посмотреть профиль Найти все сообщения от Shitbox2
 
Регистрация: 04.10.2010
Сообщений: 571

Все правильно сделали! Спасибо большое! Это я уже отошел от темы, нашлись просто более глубинные проблемы. Создам отдельную тему для них
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скрипт не работает в FF и опера, но работает в IE(в чем дело???) Cepera Firefox/Mozilla 1 24.08.2012 16:46
НЕ работает функция length Golovastik Серверные языки и технологии 4 14.02.2011 17:31
Не работает функция инфоокна tomAlba Общие вопросы Javascript 0 30.01.2011 00:54
ява-скрипт выборочно работает-не работает zeta777 Internet Explorer 0 20.01.2010 11:41
Не работает eval в IE ..::Silence::.. Общие вопросы Javascript 8 25.03.2009 13:16