2017-02-24 6 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を過ぎても年を上げることを忘れないでください)。しかし、瞬間を見てみましょう.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

関連する問題