Imaginez un formulaire simple avec la méthode POST
et 30 entrées.
Je voudrais créer une fonction jQuery qui sera appelée à partir du bouton de soumission. J'ai cherché comment vérifier toutes les entrées requises, mais je n'ai rien trouvé pour aider.
Je voudrais quelque chose comme ça:
var inputs_required = all inputs from my form which have attribute required;
function check_required_inputs() {
if(inputs_required != "") {
//create ajax with serialize() and submit form;
}
} else {
//highlight inputs that are empty and show a message;
}
Cela peut-il être réalisé dans jQuery?
Vous pouvez donner à toutes vos entrées requises une classe commune (required
par exemple) puis utiliser each()
pour les parcourir comme:
function check_required_inputs() {
$('.required').each(function(){
if( $(this).val() == "" ){
alert('Please fill all the fields');
return false;
}
});
return true;
}
Zakaria a déjà publié une réponse, qui devrait très bien fonctionner. Alternativement, au lieu d'avoir une classe personnalisée, vous pouvez trouver à la place tous les éléments input
, textarea
et select
qui ont l'attribut required
et sont visible
utilisation
var required = $('input,textarea,select').filter('[required]:visible');
Ensuite, parcourez-les en utilisant each()
etc.
Exemple:
var allRequired = true;
required.each(function(){
if($(this).val() == ''){
allRequired = false;
}
});
if(!allRequired){
//DO SOMETHING HERE... POPUP AN ERROR MESSAGE, ALERT , ETC.
}
jQuery('button').on('click', function() {
jQuery('input:invalid').css('background-color','red');
jQuery('input:valid').css('background-color','green');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form>
<input type="text" required="true" />
</form>
<button>click</button>
Vous donnez simplement aux entrées l'attribut required="true"
, Puis toutes les entrées vides requises auront la pseudo-classe :invalid
.
jQuery('input:invalid')
vous donne une liste de toutes les entrées invalides. .length
Vous donnera la longueur de ladite liste, si la longueur est> 0, votre formulaire n'est pas valide.
J'ai créé cette fonction qui vérifie si le champ est vide non seulement mais si l'utilisateur a inséré un ou des espaces sans mettre de caractère de a à b ou autre
function checkfield (champ)
{
var off='', isit=false;
for (var j=0; j <champ.val ().trim ().split (' ').length;j++)
{
off+=champ.val ().split (' ')[j];
}
off.replace (' ', '');
if (off.length==0) isit=true;
return isit;
}
utiliser :
exemple
if (checkfield ($('.class_of_field'))==true) return;
vous pouvez essayer ceci en supposant que le formulaire a un ID
de formulaire-action et un bouton d'envoi de ID
formulaire-soumettre.
var submitButton = $('#form-submit'),
formContainer = $('#form-action');
submitButton.on('click',function(e){
e.preventDefault();
formContainer.find('input').each(function(index,ele){
if(ele.value === null || ele.value === ''){
var error = " the " + ele.name + " field is requird ";
ele.after(error);
}
});
});
Vous pouvez également utiliser la fonction itérable, every () , qui renverra soit true
uniquement si tous les la validation des entrées est satisfaite ou false
dans le cas contraire:
function check_required_inputs() {
var valid = Array.prototype.every.call($('.required'), function(input) {
return input.value;
});
if (valid) {
return true;
} else {
alert('Please fill all the fields');
return false;
}
}