Отправка нажатия клавиши Enter с помощью Javascript не запускает отправку формы

#javascript #jquery

#javascript #jquery

Вопрос:

Я пытаюсь вставить некоторый скрипт jQuery на веб-сайт, на котором есть поиск по ключевым словам. Например, когда я вставляю приведенный ниже код в amazon.com для того, чтобы задать ключевое слово и отправить нажатие клавиши enter с помощью jQuery, форма не отправляется. Что мешает отправке формы? Чем отличается фактическое нажатие клавиши enter на моей клавиатуре?

 var $searchbox = $('#twotabsearchtextbox');// this is search box element
$searchbox.keypress(function(event){
  if ((event.keyCode) == 13) {
    alert('keypress triggered');
  }
});

$searchbox.val('test keyword');
var e = $.Event('keypress', {which: 13, keyCode: 13, charCode: 13});
$searchbox.trigger(e);
  

Комментарии:

1. это нормально, это вопрос безопасности

2. Спасибо. Итак, по соображениям безопасности, даже если текстовое поле получило событие нажатия клавиши enter, оно не отправит форму переноса? Если я напрямую манипулирую формой переноса, форма отправляется.

3. Принцип безопасности заключается в том, что только человек (а не машина) может добровольно отправлять любую информацию (введенную им самим) на сервер.

Ответ №1:

Я надеюсь, что это может вам помочь.

 var $searchbox = $('#twotabsearchtextbox');// this is search box element
$searchbox.val('test keyword');
$searchbox.keypress(function(event){
  if ((event.keyCode) == 13) {
    alert('keypress triggered');
  }
});

 $("button").click(function(){
    var e = $.Event('keypress', {which: 13, keyCode: 13, charCode: 13});
    $searchbox.trigger(e);
 });  
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input id="twotabsearchtextbox"/>
<button>Trigger the select event for the input field</button>  

Комментарии:

1. Спасибо. Итак, событие нажатия клавиши запускается щелчком мыши (или другими действиями пользователя), оно отправит форму упаковки, но если нет, то она не будет отправлена по соображениям безопасности? Я также подтвердил, что это работает таким образом. jsfiddle.net/ctx0es1f

2. «если нет, то она не будет отправлена по соображениям безопасности?», мое мнение, это не причина безопасности.

3. Вы можете сослаться: ссылка