Отправьте HTML-форму, выполните функцию javascript (предупреждение затем перенаправление)

У меня есть функция JavaScript, которая отлично работает, когда я вызываю ее с помощью метода onClick. В основном, это то, что он извлекает данные из html-формы, а затем на основе этих данных перенаправляет на другую страницу.

Однако, когда я нажимаю кнопку 'enter', чтобы отправить форму/вызвать функцию JavaScript, вместо того, чтобы использовать кнопку onClick для вызова функции JavaScript, она не отвечает так, как мне бы хотелось.

Я бы хотел, чтобы пользователь нажал кнопку ввода на своей клавиатуре, то же самое происходит, как если бы они нажимали кнопку "продолжить" на странице (которая вызывает функцию через onClick)

Вот мой код:

Функция JS:

function completeAndRedirect(){
    alert('You\'re nearly there! To complete your entry, you simply need to tap \'continue\' on the next page. Good luck!');
    location.href='http://google.com/?SID='+'<? echo $CATEGORY; ?>'+','+'<? echo $PLATFORM; ?>'+','+'<? echo $DEVICE; ?>'+'&email='+document.forms[0].elements[0].value;
}

Вот форма:

<form action="" method="post" onsubmit="completeAndRedirect()">
    <input type="text" id="Edit1" style="width:280; height:50; font-family:'Lucida Sans Unicode', 'Lucida Grande', sans-serif; font-size:22px">
</form>

Огромное спасибо всем, кто может помочь!

Ответы

Ответ 1

<form action="javascript:completeAndRedirect();">
    <input type="text" id="Edit1" 
    style="width:280; height:50; font-family:'Lucida Sans Unicode', 'Lucida Grande', sans-serif; font-size:22px">
</form>

Изменение действия, чтобы указать на вашу функцию, решило бы проблему по-другому.

Ответ 2

Вам нужно предотвратить поведение по умолчанию. Вы можете использовать e.preventDefault() или return false;. В этом случае самое лучшее, вы можете использовать return false; здесь:

<form onsubmit="completeAndRedirect(); return false;">

Ответ 3

Похоже, что ваша форма отправляется по умолчанию, вы можете ее остановить:

<form action="" method="post" onsubmit="completeAndRedirect();return false;">

Ответ 4

В качестве альтернативы другим ответам у вас могут быть две кнопки: одна для отправки и одна, которая "притворяется" кнопкой отправки. Фактическая кнопка отправки может быть скрыта, а другая видна, и вы можете делать все, что пожелаете, с помощью JavaScript при нажатии кнопки "притворяться", а затем имитировать щелчок на фактической кнопке отправки в конце вашего кода.

Как вы могли бы имитировать щелчок, я не знаю, но я предполагаю, что это возможно, как это сделано в jQuery ($.click()).