2014-11-19 6 views
1

Вы видели фразу для комментариев в facebook? Я пытаюсь создать очень похожий блок комментариев с текстовыми полями. для этого у меня много форм на моей странице под «стенными стойками». Каждая форма имеет класс comment-form и внутри этой формы у меня есть textarea для комментариев. каждый из этих textarea имеет класс comment-textarea.Как отправить форму в фокус

Я хочу отправить комментарий на ввод. для этого у меня есть код JavaScript

$('.comment-textarea').keypress(function(e){ 
    if(e.which == 13 && e.shiftKey){ 

    } else if(e.which == 13){ 
     e.preventDefault(); 
     $('.comment-form').trigger('submit'); 
    } 

}); 

, но так как у меня есть много форм на странице, я не знаю, как отправить форму, которая находится на фокусе.

+0

У вас есть 'event.target', вы можете найти родительскую' форму'. – Jonathan

+0

объект события должен иметь источник события в нем где-то. .originalTarget или что-то в этом роде. –

ответ

1

Там 2 решения. Решение 1 дает каждой форме уникальный идентификатор, чтобы вы могли настроить его. Используйте комментарий-текстовое поле, чтобы найти форму, как это:

$('.comment-textarea').keypress(function(e){ 
    if(e.which == 13 && e.shiftKey){ 

    } else if(e.which == 13){ 
     e.preventDefault(); 
     $(this).closest('.comment-form').trigger('submit'); 
    } 

}); 

Найдет первый родитель с классом «комментарий-формой»

+0

Ваше первое решение не применяется, потому что эти сообщения создаются динамически так же, как и facebook. У меня нет статического числа сообщений. В любом случае ваше второе решение сработало. – user3774654

0

Вы можете использовать .closest():

$(this).closest('.comment-form').trigger('submit'); 

функция .closest() поднимается на один уровень (например, .parent()), чтобы увидеть, существует ли класс .comment-form, и если он не находит его, он повторяет процесс на другом уровне вверх и снова и снова, пока не найдет что-то (если есть что-нибудь найти вообще).

+0

ближайший и родительский, оба работали. Это дает лучшую производительность и работает на самом большом наборе браузеров. Извините, я очень новичок в javascript и jquery. – user3774654

+0

Не имеет значения - обе работают одинаково хорошо. Вам нужно будет использовать 'ближайший()', если у вас есть вложенный вид формы, то есть '

'. В этом случае 'parent()' будет идти только вверх до уровня 'div', а' ближайшее() 'будет подниматься на все уровни, пока не найдет уровень с соответствующим классом. (Надеюсь, что это имело смысл.) Если у вас нет вложенных форм, не важно, какой из них вы выберете. – Niffler

Смежные вопросы