Je veux utiliser le jQuery DatePicker. Je l'ai configuré à l'aide d'une option de champ alt. J'affiche d / m / y dans le champ de texte, mais je soumettez Y-M-D. Tout fonctionne bien jusqu'à présent, envoyant les données correctes, etc. p>
Cependant, je veux arrêter l'utilisateur de pouvoir taper manuellement une date. J'avais initialement défini le champ de saisie sur Disabled, qui a fonctionné dans chaque navigateur, sauf c.-à-d. Dans IE, il apparposerait au sélecteur de date, mais ne se ferme pas après avoir cliqué sur une date. P>
Est-ce que quelqu'un connaît la meilleure façon de faire cela? P>
4 Réponses :
Après avoir désactivé le champ de saisie, utilisez la méthode Détruire pour supprimer la datePicker. Lorsque vous réactivez le champ, recommencez à nouveau à nouveau la datePicker.
Pour empêcher l'utilisateur d'éditer manuellement l'entrée, je jetterais un événement KeyPress et retourneriez false / empêche le manutention de son gestionnaire. De cette façon s'il a JavaScript, il peut utiliser la datePicker, et s'il ne peut pas modifier manuellement l'entrée.
$("#input-id").keypress(function (e) { e.preventDefault(); });
Merci. C'est une solution vraiment concise et gère également le manque de JavaScript.
Si vous allez aussi cette route, il peut également être utile de désactiver le clavier, afin d'éviter tout retour arrière, de supprimer, etc. $ ("# entrée-id"). Clé (Fonction (E) {E.PreventDefault (); });
J'ai trouvé que KeyPress n'a pas été incapable d'empêcher la solution de retour arrière. La solution DAH97765 est donc préférable.
Extension de la réponse de NC3B:
$("#input-id").keydown(function (e) {e.preventDefault();});
La touche appresse à la clé empêche également la pâte de copie. au moins cela fonctionne pour moi.
Vous pouvez également faire cela: voir l'attribut Si vous voulez aussi que le calendrier soit afficher lorsque lisonly code> ci-dessus. p>