Я просмотрел весь 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, как это происходит при щелчке за пределами редактируемой области?