2012-04-11 2 views
0

У меня есть следующий код в моем JSP, и я связываю переменные с нокаутом js.Сборщик даты не показан на первом компоненте.

Мои JS является

calender: function() { 
    console.log("in calender"); 
    var dates = $("#from1, #to1").datepicker({ 
    defaultDate: "+1w", 
    changeMonth: true, 
    numberOfMonths: 1, 
    onSelect: function (selectedDate) { 
     var option = this.id == "from" ? "minDate" : "maxDate", 
      instance = $(this).data("datepicker"), 
      date = $.datepicker.parseDate(
      instance.settings.dateFormat || $.datepicker._defaults.dateFormat, selectedDate, instance.settings); 
     dates.not(this).datepicker("option", option, date); 
    } 
}); 
}, 

и СПЯ является

<div class="DateRange"> 
<label for="from">From</label> 
<input type="text" id="from" name="from" data-bind="click: calender, value: starDate"/> 
<label for="to">to</label> 
<input type="text" id="to" name="to" data-bind="click: calender, value: endDate"/> 
</div> 

Метод каландра вызывался, когда я нажимаю на любой даты начала или окончания конца, но этот вопрос является дата сборщик не отображается для клика (только один метод, который называется) для компонента fisrt в первый раз, независимо от его идентификатора. от следующего щелчка по второму компоненту только фишка даты подходит. Все, что мне здесь не хватает?

+0

Смотрите мой ответ ниже, вход не datapicker() до тех пор, календарный метод не работает в первый раз, что инициализирует datapicker для вход. Во втором клике работает datapicker, поскольку он был инициализирован при первом прохождении через метод календаря. –

ответ

0

В нескольких словах 1. Перенесите инициализацию datapicker из метода календаря. 2. Создайте два отдельных метода для каждого поля, которое будет отображаться соответствующий Datepicker т.е .:

$("#from1, #to1").datepicker({ 
    defaultDate: "+1w", 
    changeMonth: true, 
    numberOfMonths: 1, 
    onSelect: function (selectedDate) { 
     var option = this.id == "from" ? "minDate" : "maxDate", 
      instance = $(this).data("datepicker"), 
      date = $.datepicker.parseDate(
      instance.settings.dateFormat || $.datepicker._defaults.dateFormat, selectedDate, instance.settings); 
     dates.not(this).datepicker("option", option, date); 

     } 
    });  

    ........ 

    calenderFrom: function() { 
    $("#from1").datepicker("show"); 
    } 
    calenderTo: function() { 
    $("#to1").datepicker("show"); 
    } 

<input type="text" id="from" name="from" data-bind="click: calenderFrom, value: starDate"/> 
<input type="text" id="to" name="to" data-bind="click: calenderTo, value: endDate"/> 

UPD Я предполагаю, что вы используете jQueryUI DatePicker. Если это вам действительно не нужно показывать вручную; просто инициализируйте его

+0

Есть ли способ инициализировать datepicker в том же методе календаря? Имея их как отдельные методы, дающие ошибки компиляции в js в нашей модели зрения. – Mercy

+0

Можете ли вы показать мне свой код? –

0

Это не стрельба, потому что входной файл на самом деле не является datapicker(), пока он не получит метод календаря в первый раз. Во второй раз, когда вы нажимаете на вход, это datapicker, потому что он был установлен на первом проходе метода календаря.

Почему просто не сделать это вместо того, чтобы использовать календарь метод:

$("#from1, #to1").datepicker({...}); 
Смежные вопросы