2017-04-06 38 views
1

与knockout js datepicker一起工作。需要将今天的日期设置为默认日期,而今年1月1日为第二天,现在与第一天完全相同。添加一个默认日期来敲除js datepicker

,这里是我的js部分

ko.bindingHandlers.datepickerCtrl = { 
init: function (element, setup, allBindingsAccessor, viewModel, bindingContext) { 
    var widget = $(element); 
    var vl = setup(); 
    var valueName = vl.valueName; 
    var id = vl.id == null ? valueName : vl.id; 
    var enableExpr = vl.enableExpr; 
    var innerHtml = '<div id="' + id + '" class="input-group date" data-provide="datepicker" style="max-width:110px!important" ' + 
       'data-bind="' + (enableExpr != null ? 'enable: ' + enableExpr + ',' : '') + 'validationOptions: { insertMessages: false}">' + 
        '<input type="text" class="form-control" data-bind="' + (enableExpr != null ? 'enable: ' + enableExpr + ',' : '') + 'value: ' + valueName + '">' + 
        '<span class="input-group-addon" style="padding-bottom: 1px!important;padding-top: 1px!important;padding-right: 3px!important;padding-left: 3px!important;"><i class="glyphicon glyphicon-calendar"></i></span></div>' + 
        '<p class="validationMessage" data-bind="validationMessage: ' + valueName + '"></p>'; 
    widget.html(innerHtml); 
    ko.utils.registerEventHandler(widget.find("span"), "click", function (event) { 
     widget.find("input").focus(); 
    }); 
}, 

};

这里是HTML的一部分:

<div class="col-md-8" data-bind="datepickerCtrl: {valueName:'dtS'}"></div> 

回答

0

请检查该Link

ko.bindingHandlers.datepicker = { 
 
    init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) { 
 
     //initialize datepicker with some optional options 
 
     var options = { 
 
      format: 'DD/MM/YYYY HH:mm', 
 
      defaultDate: valueAccessor()() 
 
     }; 
 

 
     if (allBindingsAccessor() !== undefined) { 
 
      if (allBindingsAccessor().datepickerOptions !== undefined) { 
 
       options.format = allBindingsAccessor().datepickerOptions.format !== undefined ? allBindingsAccessor().datepickerOptions.format : options.format; 
 
      } 
 
     } 
 

 
     $(element).datetimepicker(options); 
 

 
     //when a user changes the date, update the view model 
 
     ko.utils.registerEventHandler(element, "dp.change", function (event) { 
 
      var value = valueAccessor(); 
 
      if (ko.isObservable(value)) { 
 
       value(event.date); 
 
      } 
 
     }); 
 

 
     var defaultVal = $(element).val(); 
 
     var value = valueAccessor(); 
 
     value(moment(defaultVal, options.format)); 
 
    }, 
 
    update: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) { 
 
     var thisFormat = 'DD/MM/YYYY HH:mm'; 
 

 
     if (allBindingsAccessor() !== undefined) { 
 
      if (allBindingsAccessor().datepickerOptions !== undefined) { 
 
       thisFormat = allBindingsAccessor().datepickerOptions.format !== undefined ? allBindingsAccessor().datepickerOptions.format : thisFormat; 
 
      } 
 
     } 
 

 
     var value = valueAccessor(); 
 
     var unwrapped = ko.utils.unwrapObservable(value()); 
 

 
     if (unwrapped === undefined || unwrapped === null) { 
 
      element.value = new moment(new Date()); 
 
      console.log("undefined"); 
 
     } else { 
 
      element.value = unwrapped.format(thisFormat); 
 
     } 
 
    } 
 
}; 
 

 

 
var viewModel = {}; 
 

 
function QuoteViewModel(data) { 
 
    var self = this; 
 
    self.QuoteDateTime = ko.observable(data.QuoteDateTime); 
 

 
    self.print = function() { 
 
     console.log(self.QuoteDateTime()) 
 
    } 
 

 
}; 
 

 
var defaultModel = { 
 
    QuoteDateTime: "/Date(1427368178400)/" 
 
} 
 

 
viewModel = new QuoteViewModel(defaultModel); 
 
ko.applyBindings(viewModel);

+0

似乎是工作,但我得到这样的:“你不能将绑定多个时间到相同的元素。“ – Inna