Saturday, January 23, 2016

ko.binding Handlers for datepicker

ko.bindingHandlers.datepicker = {
    init: function (element, valueAccessor, allBindingsAccessor) {
        //initialize datepicker with some optional options
        var options = {
            autoclose: true,
            format: 'yyyy-mm-dd'
        }

        //var options = allBindingsAccessor().datepickerOptions || {};
        $(element).datepicker(options);

        //when a user changes the date, update the view model
        ko.utils.registerEventHandler(element, "changeDate", function (event) {
            var value = valueAccessor();
            if (ko.isObservable(value)) {
                //value(event.date);
                var myDate = event.date;
                //  alert(event.date);
                var month = myDate.getMonth() + 1;
                var monthText = month;

                if (month < 10)
                    monthText = "0" + month;

                var day1 = parseInt(myDate.getDate());
                var dayText = day1;

                if (day1 < 10)
                    dayText = '0' + day1;

                value(myDate.getFullYear() + '-' + monthText + '-' + dayText);
            }
        });
    },
    update: function (element, valueAccessor) {
        var widget = $(element).data("datepicker");

        //when the view model is updated, update the widget
        if (widget) {
            widget.date = ko.utils.unwrapObservable(valueAccessor());
            if (widget.date != null || widget.date != undefined) {
                widget.setValue(widget.date);
            }
            else {
                var today = new Date();
                var curr_date = today.getDate();
                var curr_month = today.getMonth() + 1; //Months are zero based
                var curr_year = today.getFullYear();
                widget.setValue(curr_year + "-" + curr_month + "-" + curr_date);
            }
        }
    }
};


Convert Json Date
var jsonDateRE = /^\/Date\((-?\d+)(\+|-)?(\d+)?\)\/$/;
var parseJsonDateString = function (value) {
    var arr = value && jsonDateRE.exec(value);
    if (arr) {
        return new Date(parseInt(arr[1]));
    }
    return value;
};


No comments:

Post a Comment