0

これは JQuery の質問というよりも CSS の質問ですが、両方が含まれています。

繰り返し可能なフィールドをフォームに追加しようとしています...これまでのところ、CSSを除いてすべてうまくいきます...

繰り返し可能なフィールドの HTML:

    <a class="repeatable-add top-link tooltip-link" href="#" rel="tooltip" data-placement="top" data-original-title="Add a new Address Field">
        <i class="icon-plus-sign"></i>
    </a>
    <div class="controls" id="GMAddresses">
        <ul id="GMAddress-repeatable" class="custom_repeatable" style="list-style:none;margin-left:0;">
            <li>
                <div class="input-prepend input-append" style="margin-left:1%;margin-top:2%;">
                    <span class="add-on"><i class="icon-home"></i> <a class="repeatable-up" href="#"><i class="icon-arrow-up"></i></a></span>
                    <input type="text" name="GMAddress[0]" style="width:85%;" placeholder="Address Here" required>
                    <span class="add-on"><a class="repeatable-down" href="#"><i class="icon-arrow-down"></i></a> <a class="repeatable-remove" href="#"><i class="icon-minus-sign"></i></a></span>
                </div>
            </li>
        </ul>
    </div>

Repeatable Add ボタンの JQuery:

    //Repeatable Add Button
    $('.repeatable-add').click(function() {
        //Check if there is any open address fields
        var e_error = new Boolean;
        e_error = false;
        $('ul.custom_repeatable').each(function() {
            $(this).find('li').each(function() {
                var mytext = "";
                mytext = $(this).find('input[type=text]').val();
                if(mytext === "") {
                    e_error = true;
                    return false;
                }
            });
        });
        //Check if the max (7) number of addresses has been reached
        if($('ul.custom_repeatable li').length < 7) {
            if(e_error === false) {
                //Add the extra field if there are no errors
                field = $(this).closest('div').find('.custom_repeatable li:last').clone(true);
                fieldLocation = $(this).closest('div').find('.custom_repeatable li:last');
                $('input', field).val('').attr('name', function(index, name) {
                    return name.replace(/(\d+)/, function(fullMatch, n) {
                        return Number(n) + 1;
                    });
                })
                field.insertAfter(fieldLocation, $(this).closest('div')).hide().show('slow');
                $('ul.custom_repeatable li:last input').focus();
                return false;
            } else {
                //Show popup if there was an open address field
                $('#extra_address_error2').popover('show');
                setTimeout(function() {
                    $('#extra_address_error2').popover('hide');
                }, 5000);
                $('ul.custom_repeatable li:last input').focus();
            }
        } else {
            //Show popup if max (7) number of addresses has been reached
            $('#extra_address_error1').popover('show');
            setTimeout(function() {
                $('#extra_address_error1').popover('hide');
            }, 5000);
        }
    });

繰り返し可能な上下ボタンを除いて、これは正常に機能します...これらのボタンを使用すると、ユーザーは必要に応じてフィールドを上下に移動できますが、最初のフィールドに上ボタンを表示したり、下ボタンを表示したりしないでください。最後のフィールドで…

これは私が使用したCSSです:

    ul.custom_repeatable > li:first-child .repeatable-up {
        visibility: hidden;
        clear:both;
    }
    ul.custom_repeatable > li:last-child .repeatable-down {
        visibility: hidden;
        clear:both;
    }

[追加] ボタンを使用して新しいフィールドを追加するまで、CSS は正常に機能します...その後、[繰り返し可能な下へ] ボタンが新しいフィールドに表示されません...

JQueryでフィールドを更新/並べ替えると、CSSは両方のボタンで機能します...

助けてください...

ありがとう!

4

0 に答える 0