在把手模板里面的Datepicker

时间:2013-10-28 22:00:19

标签: jquery-ui handlebars.js

我正试图想出一种在把手模板中使用jqueryui datepicker的方法。到目前为止,我有以下似乎不起作用:

>     <script src="//cdnjs.cloudflare.com/ajax/libs/jqueryui/1.10.0/jquery-ui.min.js"></script>
>      <script>
>          $(function () {
>              $(".datePicker").datepicker();
>          });   </script>




 <script id="template-row" type="text/x-handlebars-template">
        <div class="returnRow{{#if altRow}} returnRow-alt{{/if}} clearfix">
            <input type="hidden" class="return-id" value="{{ID}}" />
            <input type='hidden' class='return-last-updated' value='{{LastUpdated}}' />
            <div class="pull-left returnRow-date">
                <input type="text" class="datePicker" />
             </div>
            <div class="pull-left returnRow-return">
                <input type="text" style="width: 90%" class="return-value" onchange='SaveSingleRow(this)' value="{{textValue}}" />
            </div>
            <div class="pull-left returnRow-message">
                <span class="row-message"></span>
            </div>
        </div>
    </script>

1 个答案:

答案 0 :(得分:3)

我认为你有两个选择:

  1. 将填充的模板添加到DOM后绑定日期选择器。
  2. 将datepicker绑定到填充模板的jQuery包装版本,然后将该jQuery对象添加到DOM中。
  3. 第一个选项如下:

    var t = Handlebars.compile($('#template-row').html());
    $(something_already_in_the_dom).append(t(data));
    $('.datePicker').datepicker();
    

    演示:http://jsfiddle.net/ambiguous/w2wyU/7/

    第二个选项如下:

    var t = Handlebars.compile($('#template-row').html());
    var $html = $(t(data));
    $html.find('.datePicker').datepicker();
    $(something_already_in_the_dom).append($html);
    

    演示:http://jsfiddle.net/ambiguous/PMP8R/

    请注意,这两个选项都在外部模板中进行。根本问题是需要在jQuery对象上调用.datepicker,但所有内容都只是模板内的文本,在模板处理完毕之前,您不能拥有该文本的jQuery包装版本。