1

約 1 年前、クローンを使用してフォームを複製するスクリプトを (StackOverflow の助けを借りて) 作成しました。スクリプトは必要なことを行いますが、しばらく使用した後、異なるべきことがいくつか見つかりました。問題は、javascript と jQuery の両方の知識が非常に限られているため、難しすぎるように思われることです。

スクリプト:

<script type='text/javascript'>//<![CDATA[ 
$(window).load(function(){
$('.startdatum').removeClass('hasDatepicker').datepicker({
    dateFormat: 'dd-mm-yy',
    constrainInput: false
});


$("input[type='button'].AddRow").live('click',
function() {
    var index = $(this).closest('div').index();
    if (index > 0) {
        $(this).closest('div').remove();
    } else {


        var $tr = $(this).closest('div').clone(true);
        $tr.find('input.AddRow').val("Delete");
        var $input = $tr.find('input.startdatum');
        var index = $('input#counter').val();
        var id = 'datepicker' + index;
        index++;
        $('input#counter').val(index);
        $input.attr('id', id).data('index', index);
        //console.log(index);
        $(this).closest('span').append($tr);
        $('.startdatum').each(function() {
            $(this).datepicker('destroy');
            $(this).datepicker({
                dateFormat: 'dd-mm-yy',
                constrainInput: false
            });
        });

    }

});
});//]]>  

</script>

質問

  1. スクリプトは、入力されたすべてのフィールドを含むフォームを複製するようになりました。http://api.jquery.com/clone/を読みましたが、空のフィールドをコピーする方法がわかりません。

  2. 初期フォームには、別のフォームを追加するためのフォーム ボタンがあります。複製された各フォームには、特定のフォームを削除するためのボタンがあります。私は両方をすべてのフォームに入れたいと思っています(最初のフォームの削除を除いて、そのままにしておく必要があります)。

  3. 最も重要なのは、スクリプトを使用して、すべてのフィールドが入力され有効かどうかを確認することです。すべてのフィールドが入力されるまで、クローン ボタンは表示されません。

    $(document).ready(function() {
    // Wanneer het formulier verstuurd wordt
    $("#theform").submit(function(){    
    isValid = true;
    
    // Valideer Aanhef
    var aanhef = $('input[name=aanhef]:checked').val();
    if(aanhef != 'v' && aanhef != 'm')
    {
        isValid = false;
        $('#msg_aanhef').html('Vul uw aanhef in.').show();
        $('#aanhef').addClass("fout");
    }
    else
    {
        $('#msg_aanhef').html('').hide();
    }
    
    // など
4

0 に答える 0