【问题标题】:Populating jQuery mobile datebox with restricted dates dynamically动态填充具有受限日期的 jQuery 移动日期框
【发布时间】:2013-07-23 13:04:52
【问题描述】:

我在使用 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

}

【问题讨论】:

  • 看看 $('#NewPaymentPlans').data('mobileDatebox').options 在调试窗口(chrome 开发者工具、firebug 等)。如果它是一个充满单词的选项,请查看 enable-dates 是否真的设置了一组日期 - 如果它只是一堆字母开头,则意味着 datebox 和/或 jscript 在处理数据选项时遇到问题跨度>
  • 我有时只是在一个封装的
  • 我发现了这一点,并在您发布这些内容时正在修复它。我知道你是创造它的人?一个问题/建议。在您的dev.jtsage.com/jQM-DateBox 网站上是否有一个易于访问的地方,其中包含这些示例?我设法找到了很多 HTML 示例等,但代码不多。如果有请给我链接吗?
  • 不是真的 - 真正的“代码”示例的唯一位置是在“交互式(脚本)演示”部分(该站点上的主页) - 问题是,当 jQM 版本更改时,许多有效的方法也是如此 - 这使得保持演示运行有点麻烦。
  • 也就是说,如果有人想写一些像样的代码演示并发出拉取请求,我会非常乐意将它们包含在主仓库中:)

标签: javascript jquery html attr datebox


【解决方案1】:

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

【讨论】:

  • 嗯,这似乎让我可以提出向前迈出一步的框,但日期并没有被过滤掉。
猜你喜欢
  • 2023-04-08
  • 1970-01-01
  • 2014-02-09
  • 1970-01-01
  • 1970-01-01
  • 2013-01-15
  • 2015-11-11
  • 2018-10-19
  • 2020-04-27
相关资源
最近更新 更多