2009-06-06 9 views
2

Я создал форму RequestForQuote, в которой я даю possebility для добавления новых позиций для получения RFQ'ed.jquery datepicker несколько экземпляров

В основном это довольно легко сделать с помощью PHP в моем случае. Работайте отлично. Вы можете посмотреть. Это можно найти по адресу: my website

Теперь я заразился вирусом jquery и просто хотел добавить datepicker ui (для последней версии, полученной с их веб-страницы).

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

$ к от РНР for($k=0;$k<=$NoPos;$k++) петли

Javascript код работы, как:

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

}); 

в Browswer это выглядит довольно хорошо, пользовательский интерфейс показывает, я Cann выбрать свидание.

НО ...

если добавить другую позицию в форму, которая осуществляется с помощью PHP, так что я должен представить форму рассчитывать $ NoPos вверх, ранее inersted дату (ы) утрачивается и У меня пустое поле ввода.

сейчас с onSubmit: function(dateText) Я могу получить выбранную дату. Однако я не могу получить доступ к правильному полю ввода, чтобы ввести дату.

Так что мой вопрос прост: что я делаю неправильно? Если Evrything нормально, то кто-то пожалуйста, скажите, пожалуйста, как я могу решить эту проблему ..

У меня есть thougth что-то типа:

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

и с использованием PHP для <input type="text" size="10" id="lieferdat<?php echo $k; ?>" class="datepicker" />

Большое спасибо за ваш предполагается, терпение, чтобы прочитать это ...

и многие другие спасибо за любые подсказки данными

Приветствие Daniel

ответ

1

Я не думаю, что проблема связана с датой. Датчик даты используется только для заполнения поля ввода датой, он не должен иметь ничего общего с полями формы, которые отправляются на сервер. В любом случае на странице размещается только один элемент управления datepicker (div) независимо от того, сколько динамических датпикеров вы используете на самом деле. Можете ли вы опубликовать соответствующий сгенерированный HTML-код для этой страницы?

Кстати, это похоже (по крайней мере, в вашем примере кода), вам не хватает цитаты на идентификаторе. Если это в самом коде, это может вызвать проблемы.

EDIT: На основании вашего опубликованного примера (который действительно должен был быть добавлен к вашему вопросу, отредактировав его вместо добавления в качестве ответа на него), я вижу вашу проблему. У вашего ввода нет параметра имени. Входы отправляются только в том случае, если у них есть имя.

Изменить это:

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

к этому:

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

Я согласен, что это не JQuery в «вина» только моя неопытность в этой области .. я разместил HTML код. Еще раз спасибо! – Daniel

+0

Вы были правы, что параметр имени отсутствовал. Я исправил это, но никаких изменений. Тем не менее, как только я добавлю еще один pos, то есть отправлю форму (либо с POST, либо GET), все значения будут там, где указаны даты, которые я установил ... – Daniel

+0

Вчера я был довольно много, поэтому сегодня я начал с sratch. Результат: если я использую прямой указатель, такой как $ ('# lieferdat'). Datepicker() работает нормально. дата остается после перезагрузки страницы. Ну, я мог бы пойти и «поместить» 20 идентификаторов и ограничить входящие в это число (обычно клиенту не нужно больше 10). Однако я был бы более удовлетворен, чтобы сделать это динамичным. Хорошо, я опубликую результат, если мне удастся обработать его однажды. Еще раз спасибо за поддержку! Привет, Даниэль – Daniel

3

я искал то же самое себя, и я думаю, что я нашел the trick к нему: $('input').filter('.datepickerclass').datepicker()
и на соответствующем входе элементы:
class="datepickerclass"

Я вижу выше, вы пробовали что-то подобное, но только после рецепта (этой ссылки) работал на меня.

0

Это может быть немного поздно, но все предложения, приведенные выше, не помогли мне, я придумал для этого легкое решение.

Во-первых, что вызывает проблему: JQuery присваивает datepicker идентификатору элемента. если вы клонируете элемент, то тот же идентификатор также может быть клонирован. который jQuery не нравится. Вы можете получить либо нулевую опорную ошибку, либо дату, назначенную для первого поля ввода, независимо от того, какое поле ввода вы нажимаете.

Решение:

1) уничтожить DatePicker 2) назначить новые уникальные идентификаторы для все поля ввода 3) назначить DatePicker для каждого входа

Убедитесь, что вход что-то вроде этого

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

Перед тем, как вы клонируете, уничтожьте дампинг

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

После клонирования, добавьте эти строки, а

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

и волшебство происходит

Смежные вопросы