2012-04-20 48 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}); 


}); 

正如你看到的例子,如果您選擇的日期選擇器,選擇一個日期,然後添加其他日程輸入,報警功能顯示日期你剛剛選擇。但它不會將其插入新的日期選擇器中。

我在做選擇錯誤嗎?我沒有看到什麼?

我該如何去簡單地將1天添加到previous_date var?

謝謝你的時間。

回答

3

其實'setDate'是一個datepicker方法,而不是一個選項。

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

應該工作。

+0

哦,geez。代表我進行輕微監督。我需要學習這門語言。方法..選項...棘手的東西! – willdanceforfun 2012-04-20 10:17:23

1

問題是,我可以看到,是你在if語句中設置previous_date變量。如果一個變量在if語句中,它只能從該語句中訪問。這應該工作。

它還將創建一個日期沒有VAL如果沒有時間(只是驗證檢查)

$('#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' }); 
} 

}); 
}); 

編輯:只是固定的重複變量聲明問題

編輯:我想我只是修復它

+0

我希望它會 - 我將你的代碼複製到我的jsfiddle中,但它仍然採用相同的方式 - > http://jsfiddle.net/rXrYy/3/ – willdanceforfun 2012-04-20 10:06:01

+1

現在檢查代碼,而不是將它設置在日期選擇器初始化中,我在之前將它設置爲文本框的值(如果我沒有弄錯,datepicker應該使用它作爲基礎。) – JakeJ 2012-04-20 10:11:54

+0

只需再次檢查,並已修復它:) – JakeJ 2012-04-20 10:12:30

相關問題