meteor - 如何获取特殊组件(bootstrap-daterangepicker)的表单值?

标签 meteor

我正在使用 bootstrap-daterangepicker在一个表格中。我目前获取此选择的值的方式有效,但我获取值的方式似乎不是一个好方法。

使用 session 来保存字段选择并在我完成后取消设置它们似乎很糟糕。我只是想确定我没有遗漏任何东西。

我可以从输入字段中获取值,但我必须解析字符串才能提取日期。添加这可能是一个令人头疼的维护问题,因为如果我更改 daterangepicker 日期格式,我将需要更改解析。

表单域:

    <input type="text" name="carpool_eventDates" id="carpool_eventDates" />

JS激活组件:

    Template.add_event.rendered = function () {
      // initialize add event modal;
      $('#addEvent')
       .modal();
      // initialize the date range picker
      $('input[name="carpool_eventDates"]').daterangepicker(
        // default date range options
        {ranges: {'Last 5 Days': [Date.today().add({ days: -4 }), 'today'],
              'Next 5 Days': ['today', Date.today().add({ days: 4 })]}
        },
        // grab the selection
        function(start, end) {
          Session.set("showAddEventDialogue_dateRangeStart",start);
          Session.set("showAddEventDialogue_dateRangeEnd",end);
        });
      };

JS 保存按钮点击处理程序:

    Template.add_event.events({
        'click button.save-addEventDialogue': function(e, tmpl) {

          // Get the date range selection from the session
          var start = Session.get("showAddEventDialogue_dateRangeStart");
          var end = Session.get("showAddEventDialogue_dateRangeEnd");

          // Do something with the dates

          // Clear the dates from the session now that we are done with them
          Session.set("showAddEventDialogue_dateRangeStart","");
          Session.set("showAddEventDialogue_dateRangeEnd","");

          // Close the dialogue
          Session.set("showAddEventDialogue", false);
        }             
      });

这是执行此操作的好方法吗?或者有更好的方法吗?

谢谢。

最佳答案

您可以使用 jQuery 的 .data()将 daterangepicker 数据存储在原始 <input> 上元素,而不是在 session 中。所以你可以重写你的“抓取选择”代码:

// grab the selection
function(start, end) {
  $('input[name="carpool_eventDates"]')
    .data("showAddEventDialogue_dateRangeStart", start)
    .data("showAddEventDialogue_dateRangeEnd", end);
});

然后您从元素而不是 session 中检索数据:

// Get the date range selection from the element
var start = $('input[name="carpool_eventDates"]').data("showAddEventDialogue_dateRangeStart");
var end = $('input[name="carpool_eventDates"]').data("showAddEventDialogue_dateRangeEnd");

假设 <input>当模态关闭并且模板被销毁时被丢弃,您没有 Session 或其他变量需要清理。

关于meteor - 如何获取特殊组件(bootstrap-daterangepicker)的表单值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14639028/

相关文章:

javascript - 显示来自 mongodb Meteorjs 的记录

javascript - 在浏览器上刷新集合

javascript - 对 Meteor 感到困惑 this.next() 错误 onBeforeAction

javascript - 我如何更改 meteor 应用程序的数据库

javascript - 循环遍历数组并使用 Meteor 添加到集合中

macos - Meteor 需要 sudo 才能运行

meteor - 如何在客户端使用 Meteor.wrapAsync?

javascript - MongoDB:forEach 与 fetch + each

Meteor:下载应用程序时显示加载动画/图像/模板

javascript - Meteor:需要有关 json 对象的解释