2014-09-23 2 views
0

Я использую Yii бутстрэпы datepickerRow: Check thisДата окончания должна быть больше, чем дата начала в Yii Bootstrap datepickerRow

Я хочу, чтобы мой end_date в зависимости от датой_началы. то есть end_date должен быть больше, чем дата начала. Я потратил пару часов на google, чтобы проверить, доступно ли какое-либо встроенное решение для него, но не найдено никакого решения. Затем после того, как я написал свой собственный код js, который, я думаю, прекрасно, но он не работает.

Я уже достиг этого предмета с Cjuidatepicker и его бум.

Check my working code for yii cjuidatepicker

Но я не знаю, почему он не работает для юй начальной загрузки datepickerRow.

Любая помощь будет оценена по достоинству.

Ниже мой код:

<?php 
echo $form->datepickerRow(
     $identitycard, 'date_of_issue', array(
    'onChange' => 'setEndDate("passport_date_of_expiry", this)', 
    'class' => "input-small", 
    'labelOptions' => array('label' => 'Date of Issue <span class="required">*</span>'), 
    'value' => $passportArr['date_of_issue'], 
    'name' => 'passport[date_of_issue]', 
    'readonly' => true, 
    'options' => array(
     'autoclose' => true, 
     'showAnim' => 'fold', 
     'format' => 'yyyy-mm-dd', 
     'endDate' => '-infinity' 
    ), 
    'prepend' => '<i class="icon icon-calendar"></i>', 
    'hint' => 'yyyy-mm-dd' 
     ) 
); 
echo $form->datepickerRow(
     $identitycard, 'date_of_expiry', array(
    'class' => "input-small", 
    'labelOptions' => array('label' => 'Date of Expiry <span class="required">*</span>'), 
    'value' => $passportArr['date_of_expiry'], 
    'name' => 'passport[date_of_expiry]', 
    'readonly' => true, 
    'options' => array(
     'autoclose' => true, 
     'showAnim' => 'fold', 
     'format' => 'yyyy-mm-dd', 
    ), 
    'prepend' => '<i class="icon icon-calendar"></i>', 
    'hint' => 'yyyy-mm-dd' 
     ) 
); 
?> 

// JS код

function setEndDate(id, date) { 
    var selectedDate = $(date).val(); 
    $("#" + id).datepicker({ 
     startDate: selectedDate, 
     format: "yyyy-mm-dd" 
    }); 
} 
+0

Привет, почему бы не сделать что внутри правил модели? Есть идеи? –

+0

@PrabowoMurti: Я хочу сделать это через JS. Форма слишком большая, поэтому мне будет трудно сделать это через модель. – Sky

+0

@Ultimate enable ajax validation –

ответ

1

В функции Js setEndDate, второй параметр date не JQuery элемент (this в параметр в datepickerRow). Его нельзя прочитать с помощью селектора jQuery.

В функции setEndDate вы можете прочитать значение входного сигнала, как date.value; вместо $(date).val();

EDIT:

setEndDate функция должна работать с этим изменения (refer to plugin docs связанные в исходном коде yiibooster, например, в моем yiibooster монтаж: защищенный/компоненты/самозагрузки/активы/самозагрузка-DateTimePicker/JS/самозагрузка-datetimepicker.js):

function setEndDate(id, date) { 
    $("#" + id).val(date.value); 
    $("#" + id).datepicker('setStartDate' , date.value); 
} 
+0

Это сработало. Благодаря @Alejandro – Sky