J'utilise le plug-in de validation jQuery pour la validation de formulaire et je ne suis pas en mesure de valider la liste/la boîte de sélection
<select id="select">
<option value="-1">Choose an option</option>
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
Maintenant, je veux m'assurer que l'utilisateur sélectionne autre chose que "Choisir une option" (qui est celle par défaut et a pour valeur -1). Pour que cela ne soit pas valide si vous choisissez la première option. Comment cela peut-il être fait?
Vous pouvez utiliser règle personnalisée Jquery Validator .
Un exemple similaire est discuté ici . Le code ci-dessous est tiré de l'exemple:
// add the rule here
$.validator.addMethod("valueNotEquals", function(value, element, arg){
return arg != value;
}, "Value must not equal arg.");
// configure your validation
$("form").validate({
rules: {
SelectName: { valueNotEquals: "-1" }
},
messages: {
SelectName: { valueNotEquals: "Please select an item!" }
}
});
Mettez <option value="">Choose an option</option>
comme vide plutôt que -1
en utilisant la validation jQuery
rules: {
select: "required"
}
Ajoutez ceci dans votre règle
select:{
required: function(element) {
if( $("#select").val() =='-1'){
return false;
} else {
return true;
}
}
}
Ou utilisez la valeur de l'élément:
required: function(Elm) {
if(Elm.options[Elm.options.selectedIndex].value != "-1") {
return true;
} else {
return false;
}
}
Pourquoi n'utilisez-vous pas la valeur de la condition?
required: function(Elm) {
return (Elm.options[Elm.options.selectedIndex].value != "-1");
}
Cela fait la même chose que la solution de Robin, mais est beaucoup plus court.
Comment pouvons-nous valider pour jquery ui select dropdown
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="http://code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.15.0/jquery.validate.min.js"></script>
<script>
$(".intselect").selectmenu();
$().ready(function() {
jQuery.validator.setDefaults({
debug: true,
success: "valid"
});
$( "#validateregister" ).validate({
rules: {
firstname: {
required: true
},
email: {
required: true,
email: true
},
year: {
required: true
}
}
});
$('#validateregister').change(function() {
if ($("#validateregister").valid()) {
$(".go").removeAttr("disabled");
}
else{
$(".go").attr("disabled","disabled");
}
});
});
</script>
"sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<link rel="stylesheet" href="http://code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
<form id="validateregister" style="width: 300px;">
<div> <br />
<input type="text" name="firstname" class="form-control" id="firstname" />
</div>
<div> <br />
<input type="text" name="email" class="form-control" id="email" />
</div>
<div> <br />
<select class="form-control intselect" name="year" id="year">
<option value="">Select year</option>
<option value="2014">2014</option>
<option value="2015">2015</option>
<option value="2016">2015</option>
</select>
</div>
<div> <br />
<input type="submit" class="btn btn-default go" value="submit" disabled>
</div>
</form>