Заставить JEditable вернуться к отображению текстовой области редактирования на месте, если отправка не удалась? - PullRequest
0 голосов
/ 05 декабря 2011

Я использую Jeditable с jQuery, и это в основном работает так, как я хочу.Когда пользователь отправляет некоторые изменения через jeditable (я использую textarea), и сервер определяет, что есть некоторые ошибки проверки, я хочу автоматически вернуться к отображению textarea, содержащему самые последние изменения пользователя.Это сделано для того, чтобы они не теряли введенный текст (это могло быть результатом ошибки на стороне сервера или случайного нажатия кнопки отправки до того, как они были готовы).

Есть ли простой способ получитьjeditable заново создать элемент управления для редактирования?

1 Ответ

0 голосов
/ 07 декабря 2011

Хорошо, вот что я сделал, чтобы решить это. Я взломал jeditable.js, чтобы он ожидал данные JSON в качестве ответа в обратном вызове AJAX success, инициированном при отправке редактирования на месте. В объекте JSON есть поле alert, которое я использую как

var ajaxoptions = {
  type    : 'POST',
  data    : submitdata,
  dataType: 'text',
  accepts: 'json',
  url     : settings.target,
  success : function(result, status) {
      data = $.parseJSON(result);
      $(self).children('span.indicator').remove();
      if(!data.alert) {
        $(self).html(data.text);
        self.editing = false;
        callback.apply(self, [data, settings]);
        if (!$.trim($(self).html())) {
            $(self).html(settings.placeholder);
        }
      }
      else {
        callback.apply(self, [data, settings]);
      }
  },
  error   : function(xhr, status, error) {
      $(self).children('span.indicator').remove();
      onerror.apply(form, [settings, self, xhr]);
  }

};

Так что, по сути, если есть строка предупреждения, отличная от NULL, я просто ничего не делаю (кроме триггера функции callback, если она определена). Кажется, это работает нормально, оставляя поле textarea на месте с изменениями пользователя внутри него. Мой обратный вызов предупреждает пользователя, что изменение не было отправлено с использованием текста в data.alert.

...