2017-02-24 121 views
3

您好我正在試圖做一個時間表付款模塊與JS我的代碼工作絕對好,但我有一個非常小的要求,但我完全困惑,以達到這一要求。其實我想複製最後克隆的輸入字段(日期和金額字段)的值,但我希望日期字段增加一(1)個月最後選定的值。我嘗試了所有可能的領域,但沒有成功。jquery克隆與最後輸入值

這裏是我的小提琴

https://jsfiddle.net/9yvm5cj4/

這裏是我的JS

$(document).ready(function() { 
    $('<div/>', { 
    'class': 'ScheduleextraPart', 
    html: GetHtmls() 
    }).appendTo('#Schedulecontainer'); 
    $('#ScheduleaddRow').click(function() { 
    $('<div/>', { 
     'class': 'ScheduleextraPart', 
     html: GetHtmls() 
    }).hide().appendTo('#Schedulecontainer').slideDown('fast'); 
    }); 
}) 

function GetHtmls() { 
    var lens = $('.ScheduleextraPart').length; 
    var $htmls = $('.ScheduleextraPartTemplate').clone(); 
    $htmls.find('[name=txtSchedule]')[0].name = "txtSchedule" + lens; 
    $htmls.find('[name=txtScheduleAmountPay]')[0].name = "txtScheduleAmountPay" + lens; 
    return $htmls.html(); 
} 
+1

如果你只是在你的月份加1,那麼你可以相當容易地寫一些東西(只記得在12歲以後也會增加一年)。但看看moment.js。他們處理這種事 – ntgCleaner

+0

我試過了所有可能的方式,我知道但每次都失敗 – Rtra

回答

0

我有點不得不重做大量代碼的真正瞭解發生了什麼事。

檢查this fiddle的工作版本。

當頁面加載時,我抓取表單模板的一個版本並克隆它,然後刪除它(更容易進行驗證和更改),然後附加它。夠簡單。

var formItem; 
$(document).ready(function() { 
    //Clone and remove your div instead of hiding it 
    formItem = $('.ScheduleextraPartTemplate').clone(); 
    $('.ScheduleextraPartTemplate').remove(); 
    formItem.addClass('clone clone-1'); 
    $('#Schedulecontainer').append(formItem); 
}); 

棘手的部分帶有onclick事件。當用戶點擊時,我克隆了最後一個表單組,更改類以便迭代,然後在輸入中檢索日期。檢索日期後,我運行了一個新的函數,爲該月添加+1(並檢查它是否超過12,並在年份中添加+1)。

$(document).on('click', '#ScheduleaddRow', function() { 
    var cloneForm = $('.clone').last().clone(); 
    var cloneNum = $('.clone').length; 
    cloneForm.removeClass('clone-'+cloneNum).addClass('clone-' + (cloneNum+1)); 
    var date = cloneForm.find('[name="txtSchedule"]').val(); 
    cloneForm.find('[name="txtSchedule"]').val(addOneMonth(date)); 
    cloneForm.find('[name="txtSchedule"]')[0].name = "txtSchedule" + (cloneNum+1); 
    cloneForm.find('[name="txtScheduleAmountPay"]')[0].name = "txtScheduleAmountPay" + (cloneNum+1); 
    $('#Schedulecontainer').append(cloneForm); 
}); 

function addOneMonth(date) { 
    var year = parseInt(date.split("-")[0]); 
    var month = parseInt(date.split("-")[1]) + 1; 
    var day = parseInt(date.split("-")[2]); 
    if(month > 12) { 
     month = month - 12; 
     year++ 
    } 
    return year + "-" + month + "-" + day; 
} 
+0

看起來不錯,但添加新克隆時出現問題,它必須在字段名稱中添加一個從零到數字的增量是不可能的? – Rtra

+0

這是可能的,我只是忽略了這個細節。當我回到電腦時,我會解決這個問題。 – ntgCleaner

+0

確定我會等待您的回覆@ntgCleaner – Rtra