web-dev-qa-db-fra.com

Vérification des valeurs du champ de formulaire avant de soumettre cette page

J'ai écrit la fonction suivante qui vérifie si le champ start_date n'est pas vide et affiche le message approprié lorsque l'utilisateur clique sur le bouton Envoyer. Mais alors cela prend le contrôle à la page précédente. L'utilisateur doit donc réécrire tous les autres champs de ce formulaire . Y a-t-il un moyen de rester sur cette page même après l'affichage du message d'erreur, avec la valeur de tous les autres champs.

//JavaScript
function checkform() {
    if(document.frmMr.start_date.value == "") {
        alert("please enter start_date");
        return false;
    } else {
        document.frmMr.submit();
    }
}

// HTML
<html>
    <form name=frmMr action="page1.jsp">
        Enter Start date:
        <input type="text" size="15" name="start_date" id="start_date">
        <input type="submit" name="continue" value="submit" onClick="checkform();">
    </form>
</html>

Merci d'avance

11
reva

Bien que vous ayez une valeur de retour dans checkform, celle-ci n'est utilisée nulle part. Essayez plutôt d'utiliser onclick="return checkform()"

Vous voudrez peut-être envisager de remplacer cette méthode par onsubmit="return checkform()" dans la balise de formulaire, bien que les deux fonctionneront si vous cliquez sur le bouton.

19
user11977

Vous pouvez simplement faire le start_date requis en utilisant 

<input type="submit" value="Submit" required />

Vous n'avez même pas besoin de la forme de contrôle () alors.

Merci

6
Ujwal Ratra

utilisez return avant d'appeler la fonction, pendant que vous cliquez sur le bouton d'envoi, deux événements (affichage du formulaire comme vous avez utilisé le bouton d'envoi et appel de la fonction pour onclick) se produiront. Pour éviter l'affichage du formulaire, vous devez renvoyer faux, vous l'avez également fait. il faut spécifier le retour, c'est-à-dire attendre une valeur de la fonction, 

c'est un code:

input type="submit" name="continue" value="submit" onClick="**return** checkform();"
0
nikhil reddy

Je ne sais pas avec certitude, mais on dirait qu'il est toujours soumis. Je rapide solution serait de changer votre (deviner votre code ici):

<input type="submit" value="Submit" onclick="checkform()">

à un bouton:

<input type="button" value="Submit" onclick="checkform()">

De cette façon, votre formulaire est toujours soumis (de la part de votre checkform ()) et ne devrait pas recharger la page.

Il existe d’autres solutions, peut-être meilleures, pour y remédier, mais cela fonctionne entre-temps.

0
WSkid