J'essaie de faire en sorte que la validation jQuery fonctionne sur une page Web que je crée. J'ai environ 6 champs différents qui contiennent les détails de la page. J'utilise ceci pendant que je me cache et leur montre qu'ils donnent une meilleure expérience utilisateur.
Le plug-in fonctionne comme je le souhaite chaque fois que j'essaie de soumettre la page et que j'ajoute un seul caractère (lorsqu'une zone de texte nécessite 2 caractères ou plus). Toutefois, je souhaite également que la validation s'effectue sur blur. Je souhaite informer immédiatement mes utilisateurs s'ils ne respectent pas la condition de validation afin qu'ils puissent y remédier immédiatement et qu'ils ne soient pas obligés de revenir.
Quelqu'un peut-il me dire ce que je dois faire? J'utilise le * http://bassistance.de/jquery-plugins/jquery-plugin-validation/ plugin.
C'est le code jQuery que j'ai écrit jusqu'à présent:
$("#aspnetForm").validate({
rules: {
<%=txtFirstName.UniqueID %>:
{
required: true,
minlength: 2
}
,
<%=txtSurname.UniqueID %>:
{
required: true,
minlength: 2
}
,
<%=txtMobileNumber.UniqueID %>:
{
required: true,
minlength: 8
}
,
<%=Email.UniqueID %>:
{
required: true,
email: true
}
,
<%=ddDay.UniqueID %>:
{
required: true
}
,
<%=ddMonth.UniqueID %>:
{
required: true
}
,
<%=ddYear.UniqueID %>:
{
required: true
}
,
<%=txtHouseNumber.UniqueID %>:
{
required: true,
minlength:1
}
,
<%=txtAddress1.UniqueID %>:
{
required: true,
minlength:5
}
,
<%=txtCity.UniqueID %>:
{
required: true,
minlength:2
}
,
<%=txtSuburb.UniqueID %>:
{
required: true,
minlength:2
}
,
<%=txtPostCode.UniqueID %>:
{
required: true,
minlength:4,
maxlength:4
}
,
<%=UserName.UniqueID %>:
{
required: true,
minlength:4
}
,
<%=Password.UniqueID %>:
{
required: true,
minlength:4
}
,
<%=ConfirmPassword.UniqueID %>:
{
equalTo: "ctl00$ctl00$cpMain$cpLeft$Password"
}
,
<%=chkTerms.UniqueID %>:
{
required: true
}
},
messages: {
<%=txtFirstName.UniqueID %>:
{
required: "Please enter your firstname",
minlength: "Minimum length is 2 characters"
},
<%=txtSurname.UniqueID %>:
{
required: "Please enter your lastname",
minlength: "Minimum length is 2 characters"
},
<%=txtMobileNumber.UniqueID %>:
{
required: "Please enter your mobile",
minlength: "Minimum length is 8 characters"
}
,
<%=ddDay.UniqueID %>:
{
required: "Please enter your date of birth"
}
,
<%=txtMobileNumber.UniqueID %>:
{
required: "Please enter your date of birth"
}
,
<%=txtMobileNumber.UniqueID %>:
{
required: "Please enter your date of birth"
}
,
<%=Email.UniqueID %>:
"Please enter a valid email"
,
<%=txtHouseNumber.UniqueID %>:
{
required: "Please enter your house number",
minlength:"Please add at least 1 character"
}
,
<%=txtAddress1.UniqueID %>:
{
required: "Please enter your address",
minlength:"Please add at least 5 characters"
}
,
<%=txtCity.UniqueID %>:
{
required: "Please enter your city",
minlength:"Please add at least 2 characters"
}
,
<%=txtSuburb.UniqueID %>:
{
required: "Please enter your city",
minlength:"Please add at least 2 characters"
}
,
<%=txtPostCode.UniqueID %>:
{
required: "Please enter your postcode",
minlength:"Please add the 4 required characters",
maxlength:"Only 4 characters are allowed"
}
,
<%=UserName.UniqueID %>:
{
required: "Please enter your username",
minlength: "Please add the 4 required characters"
}
,
<%=Password.UniqueID %>:
{
required: "Please enter your password",
minlength: "Please add the 4 required characters"
}
,
<%=ConfirmPassword.UniqueID %>:
{
equalTo: "Passwords must match"
}
,
<%=chkTerms.UniqueID %>:
{
required: "Please agree to the terms"
}
}
});
Des conseils?
Je ne vois rien dans les docos qui puisse le faire. Le seul autre moyen auquel je peux penser est de le faire.
$('#field1, #field2, #field3').blur(function(){
validator.validate()
});
Le plongeur Dan avait raison
$('form').validate({
onfocusout: function (element) {
$(element).valid();
},
rules: {
name: 'required',
from: 'required'
},
messages: {
name: 'Please enter your firstname',
from: 'Please enter where are you from'
}
});
Vous pouvez également utiliser l'appel d'élément du validateur.
$('form').validate({
onfocusout: function(element) {
this.element(element);
},
rules: {
name: 'required',
from: 'required'
},
messages: {
name: 'Please enter your firstname',
from: 'Please enter where are you from'
}
});
Il suffit de définir onkeyup = false
$('form').validate({
rules: {
name: 'required',
from: 'required'
},
onkeyup: false
,
messages: {
name: 'Please enter your firstname',
from: 'Please enter where are you from'
}
});
essayer:
onkeyup: function (element, event) {
$(element).valid();
// your code
}
Le code Thia ne déclenchera pas la validation lors de la mise en place, mais sur le flou "lost Focus", la validation sera déclenchée. Une fois que l'utilisateur commence à modifier le champ, le message de validation disparaît. trouvez une autre personnalisation plus intéressante sur cette référence: https://jqueryvalidation.org/category/plugin/
$('#frm').validate({
onkeyup: false,
focusCleanup: true
});