1

我在使用 jQuery mobile 的 datebox 插件时遇到问题。

在我的代码中,我生成了一个 ISO8601 格式的日期数组,因为这是 datebox 所需要的。

在调用 ajax 方法并返回一些结果(响应用户输入)后,我正在生成这个数组。然后我使用 jQuery .attr 函数将 data-options 属性添加到我的“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 中显示为双引号)。

据我所知,这应该有效。我做了一个测试,我使用了我的输出代码并填写了数据选项选项,以便页面加载它们并且它工作。

我认为动态分配 data-options 属性可能存在问题。有人知道更多吗?

编辑:解决了!

我已经想通了。

$("#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

}

4

1 回答 1

2

$('#NewPaymentPlans').datebox('refresh')在动态填充后尝试调用。

于 2013-07-23T13:45:26.407 回答