Как инициировать события best_in_place

Я просмотрел весь Google и StackOverflow и просмотрел код javascript best_in_place безрезультатно.

Я использую best_in_place для редактирования свойства модели Post с помощью текстового поля, например:

<%= best_in_place @post, :summary, 
                 { :type => :textarea, :display_with => 'simple_format'}  %>

Я хочу иметь возможность запускать функцию (ы) отправки best_in_place при нажатии Enter/Return, если только она не нажата с помощью клавиши Shift (что позволит вернуть каретку), точно так же, как при нажатии за пределами редактируемой области. С обычным текстом/вводом это функция по умолчанию (за исключением части возврата каретки). Однако при использовании текстовых областей это не так.

У меня есть хороший фрагмент jQuery, взятый из здесь который обрабатывает идентификацию при нажатии Enter со сдвигом или без него, но я не могу понять, как вызвать best_in_place для отправки данных.

//Have to bind it to the activate function, or else 
//the element won't be in the DOM when it tries to identify it
$('.best_in_place').bind('best_in_place:activate', function(){          
   $(this).find('textarea').keyup(function(e) {
      var $textarea = $(this);
      if(e.keyCode == 13 && !e.shiftKey) {
        e.preventDefault(); // Don't make a new line         
        // This line does weird things
       $(this).parents('.best_in_place').trigger('best_in_place:update').trigger('best_in_place:deactivate');
      }
    });
});

У меня также есть некоторые функции, связанные с функцией best_in_place:update, которые в основном добавляют и удаляют классы для стилизации. С приведенным выше кодом, когда я нажимаю ввод в текстовой области best_in_place, функции, которые я привязал к функции best_in_place:update, срабатывают, но данные не отправляются на сервер, как я вижу в консоли.

TL;DR; Как запустить best_in_place для отправки/обновления и деактивации при нажатии клавиши Enter, как это происходит при щелчке за пределами редактируемой области?


person biggles    schedule 11.03.2014    source источник


Ответы (1)


$('тело').click(); может быть? Не использовал эту структуру, но если нет кнопки отправки и потеря фокуса на вводе отправляет форму, это может сработать.

person Scotty Bollinger    schedule 11.03.2014
comment
Хм, возможно, вызывает событие размытия в текстовой области. Я считаю, что именно здесь происходит деактивация. - person biggles; 11.03.2014