У меня есть немного jQuery, чтобы подавить возврат каретки, когда клиенты заполняют наши формы:
$('form.eForm:not(.suppress-submit-on-enter-key-disabled) :not(:button, :submit)').keypress(function(e){
if(e.which == 13){
// Cancel submit event
e.preventDefault();
// Give focus to next input element
$(':input').eq($(this).index(':input') + 1).focus();
}
});
Тем не менее, он также смог подавить возврат каретки в наших блоках комментариев.
Казалось, достаточно просто добавить средство проверки textarea
например, существующий код должен проверять : not (: button,: submit):
$('form.eForm:not(.suppress-submit-on-enter-key-disabled) :not(:button, :submit, :textarea)').keypress(function(e){
if(e.which == 13){
// Cancel submit event
e.preventDefault();
// Give focus to next input element
$(':input').eq($(this).index(':input') + 1).focus();
}
});
Упс! : not (: button,: submit,: textarea) не работает, потому что кажется, что textarea
не определена для этой части jQuery.
Как другие обнаруживают эти элементы управления TextArea?
Обновить:
Один из тех, кто отправил ответ, оказался у него.
Класс eForm
, из которого генерируются все наши формы, как-то ловил это.
Потребовался мой менеджер и я пару часов, забирая это, чтобы решить проблему, но в конце концов мне нужно было только обрабатывать события из элемента управления Input.
Вот наш конечный результат:
$('form.eForm:not(.suppress-submit-on-enter-key-disabled) :input:not(:button, :submit, textarea)').keypress(function (e) {
if(e.which == 13){
// Cancel submit event
e.preventDefault();
// Give focus to next input element
$(':input').eq($(this).index(':input') + 1).focus();
}
});
Особая благодарность Хауре Цзэшуну за то, что он предоставил этот скрипт. Мне показалось, что в моем коде есть что-то более глубокое.
Почему вы не используете id
для одного textarea
и имени class
для нескольких селекторов?
Только для одного textarea
:
$('#textareaid').keypress(function(e){
if(e.which == 13){
// Cancel submit event
e.preventDefault();
// Give focus to next input element
$(':input').eq($(this).index(':input') + 1).focus();
}
});
Для нескольких полей используйте class name
и примените тот же класс для этих полей:
$('.textareaClass').keypress(function(e){
if(e.which == 13){
// Cancel submit event
e.preventDefault();
// Give focus to next input element
$(':input').eq($(this).index(':input') + 1).focus();
}
});
core.js
нашей компании, который используют все страницы. И я действительно не хочу подавлять 13
для элементов управления textarea
.
13
. Смотри СКРИТКУ
Я недавно имел такую же озабоченность и создал этот очень простой плагин jQuery для него
$('input').index(this)