Запретить кнопку для отправки на клавишу ввода - PullRequest
6 голосов
/ 02 ноября 2010

У меня есть две кнопки, одна с id = enterToSubmit и другая с id = clickToSubmit.Когда пользователь нажимает клавишу ввода, я хочу, чтобы кнопка «enterToSubmit» отправляла форму, а не кнопку «clickToSubmit».

На той же странице у меня есть текстовое поле id = title, а при загрузке страницы я скрываю «enterToSubmit»", пока пользователь не введет что-либо в текстовое поле, тогда пользователи могут нажать клавишу Enter, чтобы отправить форму.

Как предотвратить нажатие кнопки" clickToSubmit ", когда пользователь нажимает клавишу Enter?

Ответы [ 6 ]

11 голосов
/ 02 ноября 2010

К сожалению, вы не можете изменить кнопку отправки «по умолчанию» в HTML, это всегда первая input / button с типом submit / image.

, хотя вы можете попытатьсяперехватывать события Enter keypress вручную, это крайне ненадежно, так как Enter не всегда должен отправлять форму, в зависимости от (a) на какой тип элемента нацелен, (b) используется ли shift / ctrl + enter(c) какие еще элементы находятся в форме и (d) какой это браузер.Если вы пропустите дело, вы получите случайные представления по умолчанию;если вы столкнетесь с делом, которое вы не должны делать, вы получите случайные входные данные.

Так что в целом лучше, когда вы хотите контролировать действие отправки формы по умолчанию, добавить дополнительную кнопкув качестве первой кнопки отправки в форме.Если вы не хотите, чтобы эта кнопка отображалась, вы можете расположить ее с большим отрицательным значением left, чтобы оттолкнуть ее от края страницы.(Это немного уродливо, но скрытие его через display или visibility перестанет работать в некоторых браузерах.)

Так что, возможно, вы могли бы «скрыть» кнопку ввода для отправки, не делаяон исчезает, но, оттолкнув его от страницы, где его нельзя увидеть, а затем перехватывая на нем событие click до return false и останавливая отправку формы.

9 голосов
/ 02 ноября 2010

Как предотвратить отправку кнопки "clickToSubmit", когда пользователь нажимает клавишу ввода?

Попробуйте:

$("#clickToSubmit").keypress(function(e){
   if(e.keyCode === 13){
       e.preventDefault();
   }
});
1 голос
/ 02 ноября 2010

Сначала убедитесь, что обе кнопки не относятся к типу submit. Теперь на обеих этих кнопках вы можете вызывать две разные функции javascript. enterToSubmit () и clickToSubmit () также видят, что в enterToSubmit () вы читаете клавишу ввода, нажимая

if (e.keyCode === 13) { form.submit (); }

и вызов form.submit ()

при нажатии clickToSubmit () вы выполняете прямую форму.submit ()

1 голос
/ 02 ноября 2010
    jQuery('#clickToSubmit').click(function(e){    
       if(e.keyCode==13){          
            e.preventDefault();
       }    
    });
0 голосов
/ 17 июля 2017
    $('#formId').on('keyup keypress', function(e) {
          var keyCode = e.keyCode || e.which;
          if (keyCode === 13) { 
            e.preventDefault();
            return false;
          }
        });



Usually form is submitted on Enter when you have focus on input 
elements.
We can disable Enter key (code 13) on input elements within a form.

Кроме того, как и в некоторых более новых версиях Firefox, отправка формы не в этом случае безопаснее добавить событие нажатия клавиши в форму.

0 голосов
/ 02 ноября 2010

Попробуйте этот код для ввода текста

$j("#title").keypress(function(e1){
   if(e1.keyCode==13){          // if user is hitting enter
       return false;
   }
});

для кнопки отправки

$j("#clickToSubmit").submit(function(e1){
   if(e1.keyCode==13){          // if user is hitting enter
       return false;
   }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...