2011-05-10 298 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? */}); 
} 
相關問題