Essayez de définir un message de validation avec jQuery à Distance
J'ai l'un formulaire à la suite de la validation de l'installation:
$('#form').validate({
onfocusout: false,
onkeyup: false,
onclick: false,
success: function (){
$('#username').addClass('input-validation-confirmation');
}
});
$('#username').rules("add", {
onfocusout: false,
onkeyup: false,
required: true,
email: true,
remote: {
url: function,
type: 'GET',
dataType: 'json',
traditional: true,
data: {
username: function () {
return $('#username').val();
}
},
dataFilter: function (responseString) {
var response = jQuery.parseJSON(responseString);
currentMessage = response.Message;
if (response.State == 0) {
currentMessage = currentMessage + 0;
return false;
}
return 'true';
},
beforeSend: function (response) {
showLoadingIndicator($('#username'));
},
complete: function () {
hideLoadingIndicator($('#username'));
}
}
});
Ce que c'est d'essayer de faire est d'utiliser les mêmes éléments de validation (dans le but de travailler avec un autre cadre) pour afficher à la fois les erreurs et les succès des méthodes.
Mon problème est que le succès de la méthode de ma règle obtient déclenché AVANT la validation à distance est terminé. J'ai essayé paramètre le message de plusieurs façons, mais les messages personnalisés paramètre ne semble pas être appelée sur la validation de succès.
Quelqu'un sait-il d'autres méthodes pour utiliser l'erreur de validation de champ pour les succès et les messages d'erreur lors de l'utilisation d'un mélange à la fois de distance et de modèle de règles de validation?
Edit:
Je comprends maintenant je m'attendais à un succès de l'événement, au mauvais moment. J'ai besoin d'un événement qui est déclenché une fois la validation terminée (non soumis). Est-il un tel événement?
- Je suppose que vous êtes à l'aide de jqueryvalidation.org? Si oui, ça ressemble à de la remote method est sur un champ par champ, et devrait être un enfant du champ qui va déclencher une distance de vérifier . . .
Vous devez vous connecter pour publier un commentaire.
Votre code...
Le problème ici est que
onfocusout
,onkeyup
etsuccess
ne sont pas des "règles". Seulement individuel "règles" et lesmessages
option peut être placé à l'intérieur de la.rules('add')
méthode.Voir la documentation de
.rules()
méthode: http://jqueryvalidation.org/rulesonfocusout
,onkeyup
etsuccess
sont des "options" qui ne vont à l'intérieur de la.validate()
méthode, qui est uniquement lié à la<form>
élément.Autant comme une "coutume" message pour
remote
: Selon les docs, ce message d'erreur est automatiquement va être le message retourné à partir de votre serveur... il n'y a pas de configuration particulière.MODIFIER que par des commentaires et des mises à jour de l'OP:
Votre code:
Vous l'avez dit, "Encore, avec la mise à jour du code (voir ci-dessus), je ne vois jamais le succès de l'événement."
Vous avez désactivé tous les événements sur ce formulaire. Le seul cas de déclenchement de validation sur ce terrain, c'est quand le bouton "soumettre" est cliqué. Exactement quand attendez-vous de "voir"
success
feu éteint?DÉMO: http://jsfiddle.net/xMhvT/
En d'autres termes,
submit
est le seul événement de gauche pour déclencher un test de validation lorsque vous avez désactivé tous les autres événements.MODIFIER la base d'un autre OP de mise à jour:
success
n'est pas un "événement". Un "événement" est unclick
,blur
,keyup
, etc. (onkeyup
,onfocusout
etonclick
sont des options qui contrôlent les événements de ce plugin)success
est une "fonction de rappel". Une "fonction de rappel" est ce qui se passe sur l'événement.• Si vous avez besoin d'une "fonction de rappel" qui se déclenche à chaque fois qu'un champ de passe de validation, vous pouvez utiliser
success
.• Si vous avez besoin d'une "fonction de rappel" qui se déclenche lorsque le formulaire est valide, alors vous pouvez utiliser
submitHandler
. Cependant, c'est aussi quand le formulaire est soumis.• Si vous voulez "tester" la forme entière ou un seul champ pour voir si elle est valide sans l'envoi du formulaire, vous pouvez utiliser le
.valid()
"méthode".Cette méthode fera feu de l'essai (afficher le message) et renvoyer une valeur booléenne.
DÉMO: http://jsfiddle.net/xMhvT/1/
Voir: http://jqueryvalidation.org/valid/
.validate()
.success
est également une partie de la fonctionnalité de base du plugin. Lorsque le plugin est actif,success
sera toujours tiré à savoir si vous avez déclaré ou non. Sinon, je ne sais pas comment faire d'autre pour vous aider autre que de montrer la bonne façon d'utiliser ce plugin et de ses méthodes.success
dans lerules()
méthode rompt totalement le plugin. Elle est mise à feu au chargement de la page et lorsque les champs ne sont pas valides: jsfiddle.net/9AfLasuccess
feu jusqu'à ce que après le bouton "soumettre" est cliqué... d'ici là, les données sont envoyées et la page est déjà être rechargés/redirigés. Voir: jsfiddle.net/xMhvTsubmit
événement! "Tabulation" les feux de l'onfocusout
événement... quandonfocusout
est désactivé, la tabulation ne fait rien. La seule façon que je peux obtenir cet exemple pour déclencher un test de validation est en cliquant sur le bouton envoyer: jsfiddle.net/xMhvTremote
, vous ne voulez pas de tir de validation sur chaque frappe de touche.Utiliser le
remote
,dataFilter
etmessages
paramètres comme ceci:Je suis en retard pour répondre à cette question, mais je pense qu'il peut aider d'autres personnes:
dans votre php suffit d'ajouter le suivant
et dans ton code js écrire les opérations suivantes:
$(function(){
});