<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 :)
7 Réponses :
Vous pouvez valider tous les 5 prix et retourner true uniquement si les 5 correspondent à vos règles de validation. P>
Ma recommandation personnelle serait une chose comme ceci:
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! = = "").
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})
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; }
$('#form input').each(function(){ console.log('valid',$(this)[0].validity.valid); });
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: 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!
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>
#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