Plugin jQuery validation : vérifier l’unicité d’un champ

Le plugin de validation jQuery propose une fonction de validation « à distance » en AJAX, utile par exemple pour vérifier l’unicité d’un login (cf. documentation).

Dans le cas d’un login pouvant être modifié par l’utilisateur il est nécessaire de n’appliquer la règle de validation que si celui-ci change. Imaginez un formulaire d’édition des informations d’un utilisateur enregistré en base où l’on peut modifier le login et le mot de passe. Dans le cas où le login ne change pas le formulaire ne passe pas la validation car le login est déjà pris… par la personne qui modifie ses informations.

Pour contourner ce problème j’utilise l’option « depends » qui permet de déclencher une règle de validation uniquement si la dépendance est correcte.

$('#myInput').rules('add', {
	required: true,
	remote: {
		param: {
			url: 'http://url/vers/ma/fonction/de/verification',
			type: 'POST'
		},
		depends: function(el) {
			return $(el).val() != loginValue;
		}
	}
}

« loginValue » est une variable contenant le login actuel, login qui provient du champ texte et qui est stocké à l’initialisation de la page. Si le login actuel est différent du login présent dans l’input lorsque la validation s’effectue, « depends » renvoie « true » et la vérification AJAX s’effectue.

Notez que contrairement à la documentation les paramètres sont passé dans un objet « param ». Après le contournement du bug des classes multiples c’est ici un nouveau bug. Si vous utilisez « depends » dans « remote » les paramètres de l’appel AJAX ne sont pas pris en compte, à moins de passer un nouvel objet « param ».

Commentaires

Ajouter un commentaire