2013-01-19 12 views
10

Chcę użyć datepicker bootstrap i powiązać wybraną datę z knockoutjs.Powiąż datepicker datepicker z knockoutjs

funkcja, która używa datepicker:

$(function() { 

    // create the departure date 
    $('#depart-date').datepicker({ 
     autoclose: true, 
     format: 'yyyy/mm/dd', 
    }).on('changeDate', function(ev) { 
     ConfigureReturnDate(); 
    }); 


    $('#return-date').datepicker({ 
     autoclose: true, 
     format: 'yyyy/mm/dd', 
     startDate: $('#depart-date').val() 
    }); 

    // Set the min date on page load 
    ConfigureReturnDate(); 

    // Resets the min date of the return date 
    function ConfigureReturnDate() { 
     $('#return-date').datepicker('setStartDate', $('#depart-date').val()); 
    } 

}); 

Oto skrzypce że chcę używać, ale nie jest pewien, jak się za to zabrać. http://jsfiddle.net/zNbUT/276/

+0

znaleziono inne rozwiązanie tego problemu. http://stackoverflow.com/questions/14782728/object-object-object-has-no-method-when-using-bootstrap-datepicker – Gericke

Odpowiedz

5

znalazłem skrzypce że pomoże mi http://jsfiddle.net/jearles/HLVfA/6/

funkcjonalność z skrzypce:

ko.bindingHandlers.datepicker = { 
     init: function (element, valueAccessor, allBindingsAccessor) { 
      //initialize datepicker with some optional options 
      var options = allBindingsAccessor().datepickerOptions || {}; 
      $(element).datepicker(options).on("changeDate", function (ev) { 
       var observable = valueAccessor(); 
       observable(ev.date); 
      }); 
     }, 
     update: function (element, valueAccessor) { 
      var value = ko.utils.unwrapObservable(valueAccessor()); 
      $(element).datepicker("setValue", value); 
     } 
    }; 
+0

FYI: Moje skrzypce zostało zaktualizowane, aby używać innej wersji 'bootstrap-datepicker. js'. http://jsfiddle.net/jearles/HLVfA/6/ –

+0

Może to być trochę za późno, ale zaktualizowałem skrzypce, aby używać najnowszych (i poprawnych) linków do bootstrap i css datepicker: http: // jsfiddle .net/HLVfA/112 / –

3

użyłem również bootstrap-datepicker.js ale w inny sposób:

My ViewModel:

var MyDataViewModel = { 
    //Set Todays Date 
    StartDate: ko.observable(new Date()) 
} 

Moje HTML:

<div id="dtpDate" class="input-append"> 
    <input required="required" id="txtdtpDate" data-format="yyyy-MM-dd" type="text" style="width: 75%;" /> 
    <span class="add-on"><i data-time-icon="icon-time" data-date-icon="icon-calendar"></i> 
    </span> 
</div> 

I JS, aby funkcjonować:

$(function() { 
    $('#dtpDate').datetimepicker({ 
     pickTime: false 
     }) 
     .on('changeDate', function (ev) { 
      //Date.Subtring(1,10) for formatting purposes 
      MyDataViewModel.StartDate(ko.toJSON(ev.date).substr(1, 10)); 
     }); 
    }); 
}); 

I to działa idealnie dla mnie