jquery datepicker多个实例

时间:2009-06-06 21:24:09

标签: jquery input datepicker field

我已经制作了一个RequestForQuote表单,我可以在其中添加新职位以获得RFQ。

在基础知识中,在我的情况下通过PHP很容易完成。工作真的很好。你可能想看看。它位于:my website

现在我感染了jquery-virus,只是想添加datepicker ui(我从他们的网页上获得的最新版本)。

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

$ k来自php 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'});

}); 

在浏览器中看起来很漂亮,ui出现了,我可以选择一个日期。

但是...

如果我在表单中添加另一个位置,这是通过PHP完成的,所以我必须提交表单来计算$ NoPos,原来没有的日期会丢失,我有一个空白的输入字段。< / p> 现在用了 onSubmit: function(dateText)我可以获得所选日期。但是我无法访问正确的输入字段以将日期放入。

所以我的问题很简单:我做错了什么?如果evrything很好,那么有人会请,请告诉我如何解决这个问题。

我有一些如下的东西:

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" />

非常感谢您以耐心的态度阅读此内容......

还有更多感谢任何给出的提示

干杯丹尼尔

3 个答案:

答案 0 :(得分:3)

我自己也在寻找同样的东西,我想我找到了the trick$('input').filter('.datepickerclass').datepicker()
以及相关的输入要素:
class="datepickerclass"

我在上面看到你尝试了类似的东西,但只是按照配方(该链接)为我工作。

答案 1 :(得分:1)

我认为问题不在于datepicker。 datepicker仅用于使用日期填充输入字段,它不应与提交给服务器的表单字段有任何关系。无论如何,无论您实际使用多少动态日期选择器,实际上只有一个日期选择器控件(div)放置在页面上。你能发布相关的页面生成的HTML吗?

顺便说一句,看起来(至少在你的示例代码中)你错过了id的引用。如果那是在实际代码中,那可能会导致您的问题。

编辑:根据您发布的示例(实际上应该通过编辑将其添加到您的问题中而不是添加为答案),我看到了您的问题。您的输入没有名称参数。输入只有在有名称时才会回发。

改变这个:

<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" />

答案 2 :(得分:0)

这可能有点晚了,但上面的所有建议对我都不起作用,我想出了一个简单的解决方案。

首先,导致问题的原因是: JQuery将datepicker分配给元素id。如果你是克隆元素,那么也可以克隆相同的id。哪个jQuery不喜欢。您最终可能会收到空引用错误或分配给第一个输入字段的日期,无论您单击哪个输入字段。

解决方案:

1)销毁datepicker 2)为所有输入字段分配新的唯一ID 3)为每个输入分配datepicker

确保您的输入是这样的

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

在克隆之前,销毁datepicker

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

克隆后,也可以添加这些行

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

并且魔术发生了