2009-06-06 12 views
2

j'ai fait une forme de RequestForQuote, où je donne le possebility d'ajouter de nouvelles positions pour obtenir RFQ'ed.jquery datepicker plusieurs instances

Dans ce base est assez facile fait via PHP dans mon cas. Travailler vraiment bien. Vous voudrez peut-être jeter un coup d'œil. Il se trouve à: my website

Maintenant, j'ai été infecté par le virus jquery et je voulais simplement ajouter l'ui datepicker (pour la dernière version que j'ai eu de leur page Web).

<input type="text" size="10" id="deldate[] 
    class="datepicker" value="<?php echo $_REQUEST['deldate'][$k]; ?>" /> 

$ k est d'une boucle php for($k=0;$k<=$NoPos;$k++)

le travail de code javascript est comme:

$(function() { 
$('input').filter('.datepicker').datepicker({ 
     showOn: 'button', 
     buttonImage: 'calender/media/cal.gif', 
     buttonImageOnly: true, 
     firstDay: 1, 
     dateFormat: 'yy-mm-dd', 
     minDate: 0, maxDate: '+4Y'}); 

}); 

An dans la browswer il semble tout à fait agréable, l'interface se présente, je sélectionnez Cann Un rendez-vous.

MAIS ...

si j'ajouter une autre position à la forme, ce qui se fait via PHP, donc je dois soumettre le formulaire à compter NoPos $, la date anciennement inersted (s) est perdu et J'ai un champ d'entrée vide.

maintenant avec le onSubmit: function(dateText) Je peux obtenir la date sélectionnée. Cependant, je suis à défaut pour accéder au champ de saisie correcte de mettre la date dans

Ma question est simple. Qu'est-ce que je fais mal? Si evrything est bien alors quelqu'un me plaît s'il vous plaît dire comment je peux résoudre ce ..

Je thougth de quelque chose comme:

for (var i=0;i<=NoPos;i++) { 
    var tag = "#deldate"+i; 
    $(tag).datepicker({ ... }); 
} 

et en utilisant php pour <input type="text" size="10" id="lieferdat<?php echo $k; ?>" class="datepicker" />

Un grand merci pour votre pris patience de lire ce ...

et bien d'autres grâce à des conseils donnés

Vive Daniel

Répondre

1

Je ne pense pas que le problème réside dans le datpicker. L'outil datepicker est simplement utilisé pour remplir le champ de saisie avec la date, il ne devrait rien avoir à faire avec les champs de formulaire qui sont soumis au serveur. Dans tous les cas, seul un seul contrôle datepicker (div) est réellement placé sur la page, quel que soit le nombre de datpickers dynamiques que vous utilisez réellement. Pouvez-vous poster le code HTML généré pour la page?

BTW, il ressemble à (au moins dans votre exemple de code) vous manque une citation sur l'id. Si c'est dans le code actuel, cela pourrait causer votre problème.

EDIT: Basé sur votre exemple posté (qui aurait vraiment dû être ajouté à votre question en l'éditant au lieu d'être ajouté comme réponse), je vois votre problème. Votre entrée n'a pas de paramètre de nom. Les entrées ne sont postées que si elles ont un nom.

Modifier ceci:

<input type="text" size="10" 
     id="lieferdat<?php echo $k; ?>" 
     class="datepicker" /> 

à ceci:

<input type="text" size="10" 
     id="lieferdat<?php echo $k; ?>" 
     name="lieferdat<?php echo $k; ?>" 
     class="datepicker" /> 
+0

Je suis d'accord qu'il ne soit pas « faute » de jquery juste mon manque d'expérience dans ce domaine .. J'ai posté le code html code. Merci encore! – Daniel

+0

Vous étiez correct que le paramètre name était manquant. J'ai réparé cela mais pas de changement. Pourtant, dès que j'ajoute un autre pos, soit soumettre le formulaire (soit avec POST ou GET) toutes les valeurs sont là exécutés les dates que j'ai mis en ... – Daniel

+0

J'étais hier à plusieurs niveaux, donc j'ai commencé aujourd'hui à partir de sratch. Résultat: si j'utilise un pointeur direct tel que $ ('# lieferdat') .datepicker() cela fonctionne bien. la date reste après un rechargement de la page. Bien, je pourrais aller "placer" 20 identifiants et limiter l'inutile à ce nombre (habituellement le client n'a pas besoin de plus de 10). Cependant, j'aurais été plus satisfait de le faire dynamique. Eh bien, je posterai le résultat, si je parviens à le gérer un jour. Encore merci pour le soutien !! À la vôtre, Daniel – Daniel

3

je cherchais même moi-même, et je pense que je l'ai trouvé the trick à elle: $('input').filter('.datepickerclass').datepicker()
et sur l'entrée correspondante éléments:
class="datepickerclass"

Je vois ci-dessus que vous avez essayé quelque chose de similaire, mais juste après la recette (de ce lien) a travaillé pour moi.

0

Cela pourrait être un peu en retard, mais toutes les suggestions ci-dessus n'ont pas fonctionné pour moi, j'ai trouvé une solution facile pour cela.

Tout d'abord, quel est le problème à l'origine de ce problème: JQuery attribue le datpicker à l'ID de l'élément. Si vous clonez un élément, alors le même identifiant peut également être cloné. ce que jQuery n'aime pas. Vous pourriez vous retrouver avec une erreur de référence nulle ou la date assignée au premier champ de saisie, quel que soit le champ de saisie sur lequel vous cliquez.

Solution:

1) destroy datepicker 2) attribuer de nouveaux ids uniques à tous les champs d'entrée 3) assigner datepicker pour chaque entrée

Assurez-vous que votre entrée est quelque chose comme ça

<input type="text" name="ndate[]" id="date1" class="n1datepicker"> 

Avant de cloner, détruire datepicker

$('.n1datepicker').datepicker('destroy'); 

Une fois que vous cloner, ajoutez ces lignes ainsi

var i = 0; 
$('.n1datepicker').each(function() { 
    $(this).attr("id",'date' + i).datepicker(); 
    i++; 
}); 

et la magie se