Je viens de commencer à utiliser jQuery pour la première fois, donc je ne sais pas si ce que je fais est correct. Ce que j'essaie de faire est très basique. J'ai un script qui ajoute un filigrane CSS aux champs de texte lors du chargement dans une vue MVC.
Pour sélectionner l'élément, procédez comme suit:
jQuery(document).ready(function(){$('#Department.DeptName').addWatermark('input-watermarked', 'test');});
Ensuite, dans mon script pour l'ajout du css watermarkclass, il échoue à l'instruction "this.val (). Length".
jQuery.fn.toggleWatermark = function(watermarkedClass, watermarkText) {
if (this.hasClass(watermarkedClass)) {
this.removeWatermark(watermarkedClass);
}
else if (this.val().length == 0) {
this.addClass(watermarkedClass);
this.val(watermarkText);
}
}
Le script fonctionne bien lorsqu'un identifiant d'élément est "DepartmentDeptName", c'est comme si le sélecteur ne fonctionnait pas lorsque l'identifiant d'élément contenait un point. Est-ce que quelqu'un sait pourquoi ou comment contourner ce problème?
Je pense que vous devriez échapper au point avec une double barre oblique inversée: $("#Department\\.DeptName")
Voir ici .
Vous essayez d'accéder au #Department
avec une classe DeptName
. Vous devriez vous échapper avec deux barres obliques inverses (comme le disait Joril).
Voir Sélecteurs JQuery pour plus d’informations.
Des syntaxes alternatives telles que $("input[name='department.deptname']")
fonctionneront si vous avez le contrôle sur l'écriture de jQuery. J'utilise Spring MVC avec Kendo et je n'ai donc pas accès au code jQuery. La balise Spring MVC <form>
met automatiquement .
partout où cela est applicable. Par exemple. si l'utilisateur a l'adresse .., la ville deviendra donc user.address.city
(ou address.city
). Et si je décompose Spring MVC sous de multiples formes, cela perturbe ma logique d’arrière-plan. Il disperse également ce qui aurait dû être une forme unique. Une autre alternative consiste à aplatir l'objet User
sur le back-end ... encore une fois, pas très propre. Je ne suis pas sûr, mais Dojo a travaillé dans un tel scénario.