J'essaie d'utiliser le validateur Jquery intégré sur ma page. Le problème est que j'ai certains champs qui sont seulement nécessaires si le JobID (entré dans un autre champ) n'existe pas déjà dans notre base de données. J'ai un service simple qui prend simplement JobID et renvoie True ou False basé sur si le JobID existe, mais je ne peux pas sembler obtenir cette information où je le veux. Un exemple de code:
$("#dep_form").validate({
rules: {
JobID: {
required: true,
digits: true,
minlength: 3
},
OrgName: {
required: function(element) { //This field is required if the JobID is new.
return $("#jobinfo").html().length==15; }
}
},
messages: {
JobID: {
required: "Enter a Job Number.",
digits: "Only numbers are allowed in Job ID's.",
minlength: "Job Number must be at least 3 digits"
},
OrgName: {
required: "Select a Practice from the dropdown list."
}
},
errorClass: "ui-state-error-input",
errorLabelContainer: "#errorbox",
errorElement: 'li',
errorContainer: "#validation_errors",
onfocusout: false,
onkeyup: false,
focusinvalid: false
};
Actuellement, j'utilise une méthode paresseuse pour valider (voir ci-dessus). Cependant, j'ai maintenant accès à un service en utilisant l'URL:
var lookupurl = "/deposits/jobidvalidate/?q=" + $("#id_JobID").val() + "&t=" + new Date().getTime();
qui est une page qui contiendra simplement le mot Vrai ou faux, selon que cette JobID donnée existe. J'ai essayé une demi-douzaine de façons différentes de définir des variables et des fonctions d'appel dans les fonctions et je n'arrive toujours pas à retourner la valeur de cette page (que j'essaye d'accéder avec $ .get()) à mon validateur , de sorte que requis est défini sur true lorsque le travail n'existe pas et false si le travail existe déjà. Aucune suggestion? Merci.
Je pense que '$ .get()' est toujours synchrone. – Pointy
Pointy, voir mon édition. –
Cette description (que j'obtiens le résultat retourné AVANT que le rappel ne se déclenche) est exactement le problème. Je suppose que maintenant il semble assez évident, je vais essayer d'utiliser $ .ajax au lieu de $ .get et en spécifiant async: false. Merci! –