2012-04-20 2 views
1

Я сделал небольшой скрипт для графика платежей.Почему мой простой скрипт даты jquery UI setDate правильно?

При нажатии кнопки генерируется вход. Этот вход представляет собой вход селектора даты из фрейма jquery ui.

При выборе даты для первого ввода, если создается другой вход, стартовая дата будет предыдущей датой плюс 1 день.

До сих пор у меня есть половина этой работы, но, похоже, мой параметр setDate не работает так, как планировалось.

Если вы посмотрите на following jsfiddle you can see what is and isn't working so far.

Вот код JQuery на первый взгляд:

$('#add_payment_schedule_button').live('click',function(){ 

    // get number of schedule date inputs already... 
    var schedule_count = $('.payment_schedule_date_wrap').length; 


    // get previous date if there is more than 1 date box already 
    if(schedule_count > 0) 
    { 
     var previous_date = $('#payment_schedules input.date:last').val(); 
     alert(previous_date); 
    } 

    // the new input var for insertion 
    var payment_schedule = '<div class="payment_schedule_date_wrap"><input type="text" name="date['+schedule_count+']" class="date date_'+schedule_count+'" placeholder="..." /></div>'; 


    // insert the new input into the scope 
    $('#payment_schedules').append(payment_schedule); 


    // load the date picker... 
    $('input.date_'+schedule_count).datepicker({ dateFormat: 'dd-mm-yy', setDate: previous_date}); 


}); 

Как видно из примера, если вы выбрали DatePicker, выберите дату, а затем добавить еще один вход график, функция оповещения отображает дату вы только что выбрали. Но он не вставляет его в новый datepicker.

Я делаю селектор неправильно? Что я не вижу?

И как я могу просто добавить 1 день к предыдущему var?

Спасибо за ваше время.

ответ

3

Фактически 'setDate' - это метод datepicker, а не опция.

$('input.date_'+schedule_count).datepicker({ 
    dateFormat: 'dd-mm-yy' 
}).datepicker ('setDate', previous_date); 

Должно работать.

+0

oh geez. от моего имени был небольшой надзор. Мне нужно выучить язык. методы .. варианты ... хитрые вещи! – willdanceforfun

1

Проблема, насколько я вижу, заключается в том, что вы устанавливаете переменную previous_date внутри оператора if. Если переменная находится в операторе if, ее можно получить только из этой инструкции. Это должно сработать.

Это также позволит создать дату без Вала, если нет даты (Только проверка достоверности)

$('#add_payment_schedule_button').live('click',function(){ 

    // get number of schedule date inputs already... 
    var schedule_count = $('.payment_schedule_date_wrap').length; 


    // get previous date if there is more than 1 date box already 
var previous_date = ""; 
if(schedule_count > 0) 
{ 
    previous_date = $('#payment_schedules input.date:last').val(); 
    alert(previous_date); 
} 

// the new input var for insertion 
var payment_schedule = '<div class="payment_schedule_date_wrap"><input type="text" name="date['+schedule_count+']" class="date date_'+schedule_count+'" placeholder="..." /></div>'; 


// insert the new input into the scope 
$('#payment_schedules').append(payment_schedule); 


// load the date picker... 
if(previous_date == "") 
{ 
    $('input.date_'+schedule_count).datepicker({ dateFormat: 'dd-mm-yy' }); 
} 
else 
{ 
    $('input.date_'+schedule_count).val(previous_date).datepicker({ dateFormat: 'dd-mm-yy' }); 
} 

}); 
}); 

EDIT: Просто фиксированный дубликат переменной огласить Декларацию

EDIT: Я думаю, я просто зафиксировано это

+0

Я надеялся, что это будет - я скопировал ваш код в свой jsfiddle, но он по-прежнему действует одинаково -> http://jsfiddle.net/rXrYy/3/ – willdanceforfun

+1

Проверьте код сейчас, а не установите его в инициализации datepicker , Я устанавливаю его перед этим как значение текстового поля (если я не ошибаюсь, datepicker должен использовать это как основу.) – JakeJ

+0

Просто дважды проверено и это исправлено :) – JakeJ

Смежные вопросы