Использование jQuery для получения (и изменения) имени поля флажка после его клонирования?

0

У меня есть код, который я пытаюсь изменить, чтобы получить номер в поле имени.

Цель состоит в том, что через несколько кликов код становится таким же

<input type="checkbox" name="UPDATE_METHOD[0][]" value="Email" checked="">Email
<input type="checkbox" name="UPDATE_METHOD[0][]" value="SMS" checked="">SMS

<input type="checkbox" name="UPDATE_METHOD[1][]" value="Email" checked="">Email
<input type="checkbox" name="UPDATE_METHOD[1][]" value="SMS" checked="">SMS

<input type="checkbox" name="UPDATE_METHOD[2][]" value="Email" checked="">Email
<input type="checkbox" name="UPDATE_METHOD[2][]" value="SMS" checked="">SMS

Текущий код...

HTML:

   <div class="clone_replicate_this_div_1">
        <input type="checkbox" name="UPDATE_METHOD[0][]" value="Email" checked="">Email
        <input type="checkbox" name="UPDATE_METHOD[0][]" value="SMS" checked="">SMS
    </div>
        <div class="placer_1"></div>
        <a href="#" class="clone_trigger_button_1">Clone row 1</a>

JQuery:

$(document).ready(function(){
      $(".clone_trigger_button_1").click(function () {

                 // Group boxes in groups of 2
                var j = 0;

                $('[name="UPDATE_METHOD[0][]"]').prop('name', function(i, name) {
                    if (i%2==0) j++;
                    return name.split('[').shift() + '['+j+'][]';
                });

  $('.clone_replicate_this_div_1').last().clone().insertBefore(".placer_1");
                $('input.cl:last').val('');
                event.preventDefault();


      });
});

Я пытаюсь получить номер последнего UPDATE_METHOD [0] [], назначить его как переменную, а затем добавить 1.

JsFiddle находится здесь: http://jsfiddle.net/LCUTk/2/

Спасибо за любую помощь, которую вы можете дать...

Теги:

3 ответа

1
Лучший ответ

Попробуй это

$(document).ready(function(){
      $(".clone_trigger_button_1").click(function () {
          var total = $('[name^="UPDATE_METHOD"]').length;
          var index = Math.round(total / 2);
          $('.clone_replicate_this_div_1').last().clone().insertBefore(".placer_1");
          $('input.cl:last').val('');
          $('.clone_replicate_this_div_1').last().find("input[type='checkbox']").prop("name","UPDATE_METHOD["+index+"][]");
          event.preventDefault();  
      });
});

Демо-версия

  • 0
    Удивительно! Это здорово, большое спасибо :-) Это была последняя часть в исправлении того, над чем я работал целый день!
  • 0
    добро пожаловать :) ......
0

Это решение странно, но работало для меня всегда.

$(document).ready(function(){
var counter = 1 ;
$(".clone_trigger_button_1").click(function () {
    var newObject = '<div class="clone_replicate_this_div_1"><input type="checkbox" name="UPDATE_METHOD[' + counter + '][]" value="Email" checked="">Email<input type="checkbox" name="UPDATE_METHOD[' + counter + '][]" value="SMS" checked="">SMS</div>' ;
    $(newObject).insertBefore(".placer_1");
    counter++ ;
    event.preventDefault();
});
});
0

JSFIDDLE

HTML:

<div class="placer_1"></div>
<a href="#" class="clone_trigger_button_1">Clone row 1</a>
<script type="text/template" id="template">
<div class="clone_replicate_this_div_1">
    <input class="email" type="checkbox" checked="checked" />
    <label class="email_label">Email</label>
    <input class="sms"   type="checkbox" checked="checked" />
    <label class="sms_label">SMS</label>
</div>
</script>

JavaScript:

$(document).ready(function(){
    var html = $('#template').html(),
        placer = $( '.placer_1' ),
        index = 0,
        createInputs = function(){
            var div = $( html ),
                name = 'UPDATE_METHOD[' + index +  '][]';
            $( '.email', div ).attr( 'name', name )
                              .attr( 'id', 'update_method_email_' + index );
            $( '.sms',   div ).attr( 'name', name )
                              .attr( 'id', 'update_method_sms_' + index );
            $( '.email_label', div )
                              .attr( 'for', 'update_method_email_' + index );
            $( '.sms_label',   div )
                              .attr( 'id', 'update_method_sms_' + index );
            placer.before( div );
            ++index;
            console.log( index );
        };
    $(".clone_trigger_button_1").click(function ( evt ) {
        createInputs();
        evt.preventDefault();
    });
    createInputs();
});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню