2013-07-23 127 views
1

我遇到了jQuery移動日期框插件的問題。動態填充受限制日期的jQuery移動日期框

在我的代碼中,我正在生成ISO8601格式的日期數組,因爲這是日期框需要的。

我在ajax方法被調用並且帶回了一些結果(響應用戶輸入)後生成這個數組。我然後使用jQuery .attr功能添加數據選項屬性我的「calbox」節點,看起來像這樣:

<input name="mydate" id="mydate" type="date" data-role="datebox"> 

我的jQuery代碼看起來是這樣的:

$("#NewPaymentPlans").attr("data-options", '{"mode": "calbox", "enableDates": ' +  DateString + ' }'); 

DateString是轉換成字符串的日期數組。

輸出HTML看起來像這樣:

<input name="NewPaymentPlans" id="NewPaymentPlans" type="text" data-role="datebox" class="ui-input-text ui-body-c" readonly="readonly" data-options="{&quot;mode&quot;: &quot;calbox&quot;, &quot;enableDates&quot;: [&quot;2013-08-06&quot;, &quot;2013-08-07&quot;, &quot;2013-08-08&quot;, &quot;2013-08-09&quot;, &quot;2013-08-10&quot;, &quot;2013-08-11&quot;, &quot;2013-08-12&quot;, &quot;2013-08-13&quot;, &quot;2013-08-14&quot;, &quot;2013-08-15&quot;, &quot;2013-08-16&quot;, &quot;2013-08-17&quot;, &quot;2013-08-18&quot;, &quot;2013-08-19&quot;, &quot;2013-08-20&quot;, &quot;2013-08-21&quot;, &quot;2013-08-22&quot;, &quot;2013-08-23&quot;, &quot;2013-08-24&quot;, &quot;2013-08-25&quot;, &quot;2013-08-26&quot;, &quot;2013-08-27&quot;, &quot;2013-08-28&quot;, &quot;2013-08-29&quot;, &quot;2013-08-30&quot;, &quot;2013-08-31&quot;, &quot;2013-09-01&quot;, &quot;2013-09-02&quot;, &quot;2013-09-03&quot;, &quot;2013-09-04&quot;] }"> 

(& QUOT;顯示爲在由Chrome顯示的HTML雙引號)。

從我所看到的,這應該工作。我做了一個測試,在這裏我使用了我的輸出代碼,並填充了數據選項選項,以便使用它們加載它的頁面並工作。

我認爲動態分配數據選項屬性可能會有問題。有人對此有更多瞭解嗎?

編輯:解決!

我已經想通了。

$("#NewPaymentPlans").data('mobileDatebox').options.enableDates = arrayofdates 
$('#NewPaymentPlans').datebox('refresh'); 

與此功能組合:

function CreateDateArray(arrayofdates) { 
var datesarray = []; 
var stringofdates; 
$.each(arrayofdates, function (i) { 
    datesarray.push(arrayofdates[i].toISOString().substring(0, 10)); 
}); 
return datesarray 

}

+0

在調試窗口中查看$('#NewPaymentPlans')。data('mobileDatebox')。選項(chrome developer tools,firebug,whatever)。如果它是一個充滿單詞的選項,請查看enable-dates是否真的是用日期數組設置的 - 如果它首先是一串字母,這意味着datebox和/或jscript在處理數據時遇到問題 - 選項 –

+0

有時候只需在封裝的