2011-01-17 6 views
3

J'ai un problème où un utilisateur change une date directement dans le champ de saisie le champ alt ne met pas à jour. La seule fois où le champ alt est mis à jour lorsque le calendrier est utilisé pour sélectionner un jour spécifique.Jquery UI plugin datepicker - Comment changer le champ alt?

Exemple de code:

$this 
.find('#'+strInputID) 
.datepicker({altField: '#alt_'+strInputID, altFormat: 'dd/mm/yy', minDate: new Date()}) 
.datepicker("setDate" , dDfltDate); 

S'il vous plaît noter que j'utilise altFormat parce que le champ d'entrée change en fonction de la localisation, donc je ne peux pas copier la valeur à travers directement chaque fois que l'entrée a changé.

Jquery Datepicker a-t-il quelque chose à autoriser?

La liste des événements ont ici ne pas ce que je veux: http://jqueryui.com/demos/datepicker/

Quelqu'un at-il des réponses à la façon dont cela pourrait être fixé?

EDIT: Cet exemple http://jqueryui.com/demos/datepicker/#alt-field œuvres, j'ai trouvé un autre exemple qui n'a pas fait. Comme nous utilisons la version 1.7.3 et non 1.8.8, je peux supposer que cela pourrait être le problème.

Je ne peux pas mettre à niveau donc je vais continuer à tester et voir si c'est vraiment le cas. Si quelqu'un sait le contraire, s'il vous plaît faites le moi savoir. Merci

+0

J'ai trouvé une fonction _doKeyUp à l'intérieur de 1.8.8 jquery.ui.datepicker qui est utilisé pour "synchroniser l'entrée manuelle et le champ/champ alternatif.", C'est celui que je suis, donc si quelqu'un a des suggestions sur la façon dont je peut ajouter un code personnalisé pour faire la même chose alors s'il vous plaît laissez-moi savoir :) – Pricey

Répondre

2

j'ai réussi à le faire fonctionner par boulonnage sur 1.8.8 code datepicker à l'événement keyup du champ d'entrée, mais ce n'est pas une approche élégante :(Toutes les autres suggestions sont les bienvenues. Merci

var inputField = $this.find('#'+strInputID); 
inputField.datepicker({altField: '#alt_'+strInputID, altFormat: 'dd/mm/yy', minDate: new Date()}).datepicker("setDate", dDfltDate); 
inputField.keyup(function (event) { 
    var inst = $.datepicker._getInst(event.target); 
    if (inst.input.val() != inst.lastVal) { 
     try { 
      var date = $.datepicker.parseDate($.datepicker._get(inst, 'dateFormat'), 
       (inst.input ? inst.input.val() : null), 
       $.datepicker._getFormatConfig(inst)); 
      if (date) { // only if valid 
       $.datepicker._setDateFromField(inst); 
       $.datepicker._updateAlternate(inst); 
       $.datepicker._updateDatepicker(inst); 
      } 
     } 
     catch (event) { 
      $.datepicker.log(event); 
     } 
    } 
}); 
+0

Répondre à ma propre question, la meilleure approche est de mettre à niveau l'interface utilisateur JQuery 1.8.8 est stable, pour jQuery 1.3.2+ – Pricey