2010-11-12 12 views
81

J'ai décidé d'utiliser le script JQuery UI Datepicker pour choisir des dates. Ci-dessous fait partie de mon code, et la façon dont je l'intègre dans ma page PHP:Comment désactiver la saisie manuelle pour le champ Jpu Datepicker de l'interface utilisateur?

<link type="text/css" href="css/south-street/jquery-ui-1.8.6.custom.css" rel="stylesheet" /> 
<script type="text/javascript" src="js/jquery-1.4.2.min.js"></script> 
<script type="text/javascript" src="js/jquery-ui-1.8.6.custom.min.js"></script> 
<script type="text/javascript"> 
$(function(){ 
    // Datepicker 
    $('#datepicker').datepicker({ dateFormat: 'yy-mm-dd' }); 
    //hover states on the static widgets 
    $('#dialog_link, ul#icons li').hover(
     function() { $(this).addClass('ui-state-hover'); }, 
     function() { $(this).removeClass('ui-state-hover'); } 
    ); 
}); 
</script> 

Et:

// date picker (embeds JQuery script) 
echo '<label for="datepicker">Date: </label>'; 
echo '<input type="text" name="datepicker" id="datepicker" />'; 
echo '<div id="datepicker"></div>'; 

Quasiment selon les instructions JQuery UI.

Maintenant ma question est: comment puis-je désactiver les entrées manuelles dans le champ de saisie de texte? Je veux seulement que le script Jpuery Datepicker soit capable de remplir le champ de texte. Pour autant que je puisse voir, le script empêche actuellement l'utilisateur d'entrer des caractères non numériques dans le champ de texte, mais toute combinaison de chiffres est autorisée (par conséquent, le charabia comme "95460829468" est autorisé).

Répondre

208

Lorsque vous effectuez l'entrée, définissez-la pour qu'elle soit en lecture seule.

<input type="text" name="datepicker" id="datepicker" readonly="readonly" /> 
+0

solution simplicité déconcertante. Semble fonctionner comme prévu, merci beaucoup! – BeeDog

+2

Si vous ajoutez 'background-color: #fff! Important; curseur: texte! important; ' ça va avoir l'air tout à fait normal ... –

+6

J'utiliserais un pointeur de curseur pour le rendre cliquable ' ' –

23

Je pense que vous devriez ajouter style = "background: white;" à faire ressemble il est inscriptible

<input type="text" size="23" name="dateMonthly" id="dateMonthly" readonly="readonly" style="background:white;"/> 
+3

1. Copier la réponse 2. Ajouter un nouvel attribut (Je pense que vous devriez ajouter style = "background: white;" pour donner l'impression qu'il est accessible en écriture et "cursor: pointer" pour le rendre cliquable) 3. ????? ?? 4. Profit – skmasq