2011-05-10 143 views
2

我使用JQuery datepicker,问题是我生成的HTML,所以我不知道字段的ID。为什么更改我的所有字段时都会更新?

我的代码可以在http://jsfiddle.net/littlesandra88/KrEqk/

下面的形式产生,其中ID刚刚得到一个随机数前缀,以使他们不同的审判。

我没有得到什么日期选择在这些领域是增加class="datepick"到这些领域,像这样

<input name="from" id="114_begin_date" value="16/05-2011" type="text" class="datepick" /> 
<input name="to" id="114_end_date" value="16/05-2011" type="text" class="datepick" /> 

,并添加.datepick该直排式日期选择器的JavaScript,像这样

var dates = $("#from, #to, .datepick").datepicker({   

如果你尝试要多次更改日期,您会注意到,所有字段都已更新=(

如何防止发生克,所以只是我点击的领域改变了?

+0

,它工作正常 – 2011-05-10 22:45:00

回答

3

的问题是在onSelect处理

您正在运行

dates.not(this).datepicker("option", option, date); 

这改变了一切其他日期选择器为单个值(当前日期选择器之一)。


更新发表评论

改变你onSelect方法

onSelect: function(selectedDate) { 
        var self = this; 
        var option = this.name == "from" ? "minDate" : "maxDate", 
        instance = $(this).data("datepicker"), 
        date  = $.datepicker.parseDate(
            instance.settings.dateFormat || $.datepicker._defaults.dateFormat, selectedDate, instance.settings); 
        dates.filter(function(){return this.form === self.form;}).not(this).datepicker("option", option, date); 
       } 

变化做出

  1. 加入var self = this;供以后使用
  2. 使用name属性,而不是id决定哪些限制使用
  3. 而不是应用新的日期限制所有其他datepickers的(我假定你把那部分由地方在那里只有两个datepickers存在),我们筛选他们下到那些与我们改变的形式相同的形式。 (实际上另外一个,在同一直线上。请记住,这仅适用于每形成两个datepickers命名为fromto)如果你把ONSELECT功能出

演示在http://jsfiddle.net/gaby/Wy6qT/

+0

脚本将如何看,所以这不会发生? – 2011-05-10 22:54:59

+0

该行的原因是为了防止“结束日期”在“开始日期”之前。但是你是对的,如果我删除它,它可以工作,但我放松了一些功能。 – 2011-05-10 23:05:00

+0

@Sandra,更新的答案与工作示例和一些推理.. – 2011-05-10 23:11:16

2

嗯,我不熟悉的日期选择器,但你可以尝试:

$("#from, #to, .datepick").each(
    $(this).datepicker({/*... some settings? */}); 
} 
相关问题