web-dev-qa-db-fra.com

Soumettre un formulaire HTML, exécuter la fonction javascript (alerte puis redirection)

J'ai une fonction JavaScript qui fonctionne très bien lorsque je l'appelle via une méthode "onClick". Fondamentalement, il extrait des données d'un formulaire html, puis, en fonction de ces données, redirige vers une autre page.

Cependant, lorsque j'appuie sur le bouton "Entrée" pour soumettre le formulaire/appeler la fonction JavaScript, au lieu d'utiliser un bouton onClick pour appeler la fonction JavaScript, il ne répond pas comme je le souhaiterais.

J'aimerais qu'un utilisateur appuie sur le bouton Entrée de son clavier, la même chose se produit que s'il cliquait sur le `` bouton Continuer '' par page (qui appelle la fonction via onClick)

Voici mon code:

La fonction 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;
}

Voici le formulaire:

<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>

Un grand merci à tous ceux qui peuvent aider!

18
Harry
<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>

Changer l'action pour pointer vers votre fonction résoudrait le problème, d'une manière différente.

57
user1621465

Vous devez empêcher le comportement par défaut. Vous pouvez utiliser e.preventDefault() ou return false; Dans ce cas, la meilleure chose est que vous pouvez utiliser return false; ici:

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

On dirait que votre formulaire soumet quel est le comportement par défaut, vous pouvez l'arrêter avec ceci:

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