如何在Backbone-Forms中使用JQuery Datepicker?

时间:2013-01-13 14:22:13

标签: backbone.js backbone-forms

var User = Backbone.Model.extend({
    schema: {
        date: {type: 'Date'}
    }
});

var user = new User();

var form = new Backbone.Form({
    model: user
}).render();

$('.bootstrap').append(form.el);

我输入什么类型来使用包含的JQuery-UI datepicker?除此之外没有其他文件:

旧的jQuery编辑器仍然包含在内,但可能会被移动到另一个存储库:

jqueryui.List
jqueryui.Date(使用jQuery UI弹出日期选择器)
jqueryui.DateTime

模式类型在引号中声明,我无法弄清楚jqueryui.Date的字符串是什么 - 并且这无法确定。

2 个答案:

答案 0 :(得分:9)

您想要创建一个自定义编辑器,例如:'DatePicker'。

所有编辑器都附加到Backbone.Form.editors。由于DatePicker的呈现方式与文本字段完全相同,因此我们可以使用文本字段作为基础,并仅覆盖特定于datepicker的行为。

我经常使用moment.js进行与日期相关的工作,所以这个例子也包含了这个。它也基于Bootstrap DatePicker,而不是jQuery,但这几乎是100%相同。

Backbone.Form.editors.DatePicker = Backbone.Form.editors.Text.extend({
    render: function() {
        // Call the parent's render method
        Backbone.Form.editors.Text.prototype.render.call(this);
        // Then make the editor's element a datepicker.
        this.$el.datepicker({
            format: 'yyyy-mm-dd',
            autoclose: true,
            weekStart: 1
        });

        return this;
    },

    // The set value must correctl
    setValue: function(value) {
        this.$el.val(moment(value).format('YYYY-MM-DD'));
    }
});

就是这样,您现在可以使用这样的日期选择器:

schema: {
    birthday: { title: 'When were you born', type: 'DatePicker'}
}

答案 1 :(得分:0)

不确定它是否理解您的问题 但我认为你可以在视图的初始化方法中附加Jquery日期选择器