2017-02-24 70 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