8
votes

Comment valider la saisie à l'aide de JavaScript

<script type="text/javascript">
function validate() {
    if (document.form.price.value.trim() === "") {
        alert("Please enter a price");
        document.form.price.focus();
        return false;
    }
    if (document.form.price.value !== "") {
        if (! (/^\d*(?:\.\d{0,2})?$/.test(document.form.price.value))) {
            alert("Please enter a valid price");
            document.form.price.focus();
            return false;
        }
    }
    return true;
}
</script>

<form action="" method="post" name="form" id="form" onsubmit="return validate(this);">

<input name="price"  type="text" class="r2" />
<input name="price2" type="text" class="r2" />
<input name="price3" type="text" class="r2" />
<input name="price4" type="text" class="r2" />
<input name="price5" type="text" class="r2" />
...more....
<input name="price50" type="text" class="r2" />
This javascript code is working fine to validate the field "price". Question :How to make the code to work as global validation? Example: would validate the price, price2, price3, price4, price5 etc.. with a single function. Please let me know :)

2 commentaires

#incluez des avertissements généraux sur toujours la validation du côté du serveur de données.


Au lieu d'utiliser Regexp pour savoir s'il s'agit d'un nombre, utilisez Paysfloat, peut-être? Voir: w3schools.com/jsref/jsref_parsfloat.asp


7 Réponses :


0
votes

Vous pouvez valider tous les 5 prix et retourner true uniquement si les 5 correspondent à vos règles de validation.


0 commentaires

13
votes

Ma recommandation personnelle serait une chose comme ceci: xxx


4 commentaires

Que diriez-vous d'utiliser un tableau au lieu d'une grande déclaration si?


Merci Brisbe42, travaillez comme un charme. Il n'y a pas une autre option pour valider l'entrée uniquement? une telle $ ("entrée")


retour validateprice (document.form.price) && validateprice (document.form.price2) && validateprice (document.form.price3) && validateprice (document.form.price4) && validateprice (document.form.price5);


Oui, vous venez de faire validationprice (document.form.price.value.trim ()) pour chacun de ceux-ci. Cela impliquerait naturellement, puis supprimant le prix.Focus () dans chaque instruction IF dans Validateprice, pour le faire fonctionner correctement et modifier les déclarations si elles sont simplement si (prix === "") et si (prix! = = "").



1
votes

Le plus facile dans ce cas est vraiment d'utiliser jQuery. De cette façon, vous pouvez utiliser un sélecteur générique et appliquer la validation sur tous les éléments.

$("#price*").each(function() {//Do your validation here $(this) is the item price, then price2 then price3})


0 commentaires

4
votes

Si vous ne prévoyez pas d'utiliser JQuery, cela devrait fonctionner.

function validate() {
    for (var field in document.getElementsByTagName('input')) {
        if (isPriceField(field)) {
            field.value = field.value.trim();
            if (isNaN(parseFloat(field.value))) {
                return alertAndFocus(field, "Please enter a valid price");
            }
        }               
    }

    return true;
}

function isPriceField(field) {
    return (field.name.substr(0, Math.min(5, field.name.length)) === 'price')
}

function alertAndFocus(field, message) {
    alert(message);
    field.focus();
    return false;
}


0 commentaires

3
votes
$('#form input').each(function(){

   console.log('valid',$(this)[0].validity.valid);

});

0 commentaires

1
votes

J'utilise jsformvalidator pour valider mon formulaire et cela fonctionne comme un charme. Vous n'avez pas besoin d'ajouter une syntaxe lourde à vos balises HTML, des choses comme: xxx pré>

Vous vient de créer un objet JSON de base pour décrire la manière dont vous souhaitez valider votre formulaire: p> xxx pré>

} p>

et ensuite vous validez tout simplement le formulaire entier avec une seule ligne de code: P>

  jsFormValidator.App.create().Validator.applyRules('Login'); //Magic!


0 commentaires

0
votes

Le validateur de formulaire JQuery est un plug-in une entité riche et multilingue qui facilite la validation de la saisie de l'utilisateur tout en conservant votre marquage HTML Nettoyer à partir du code JavaScript.

Même si ce plugin dispose d'une large gamme de fonctions de validation, il est conçu pour exiger que possible de la circulation du réseau JQuery. Ceci est réalisé en regroupant les fonctions de validation ensemble dans "Modules", permettant de charger uniquement les fonctions nécessaires pour valider une forme particulière. P>

    <form action="/registration" method="POST">
      <p>
        User name (4 characters minimum, only alphanumeric characters):
        <input data-validation="length alphanumeric" data-validation-length="min4">
      </p>
      <p>
        Year (yyyy-mm-dd):
        <input data-validation="date" data-validation-format="yyyy-mm-dd">
      </p>
      <p>
        Website:
        <input data-validation="url">
      </p>
      <p>
        <input type="submit">
      </p>
    </form>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
    <script src="//cdnjs.cloudflare.com/ajax/libs/jquery-form-validator/2.3.26/jquery.form-validator.min.js"></script>
    <script>
      $.validate({
        lang: 'es'
      });
    </script>


0 commentaires