7
votes

JQuery Date Picker où l'entrée de texte est en lecture seule

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.

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.

Est-ce que quelqu'un connaît la meilleure façon de faire cela?


0 commentaires

4 Réponses :


0
votes

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. XXX


0 commentaires

8
votes

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();
});


3 commentaires

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.



3
votes

Extension de la réponse de NC3B:

$("#input-id").keydown(function (e)
{e.preventDefault();});


1 commentaires

La touche appresse à la clé empêche également la pâte de copie. au moins cela fonctionne pour moi.



1
votes

Vous pouvez également faire cela: xxx

voir l'attribut lisonly ci-dessus.

Si vous voulez aussi que le calendrier soit afficher lorsque a la mise au point, ajoutez ceci: xxx


0 commentaires