2013-12-12 3 views
1

У меня есть форма и кнопка, по щелчку которой я хочу повторить определенные поля формы. Я клонирую эти поля форм достоянием и пытаюсь добавить их больше при нажатии кнопки.jquery clone не копирует обработчики событий

Но я могу добавить только один элемент. Даже обработчик событий для кнопки не работает.

Вот мой код -

<div id="word_exp_area" <?php echo($wi['work_exp_label'] == 1 ? '' : 'style="display:none;"'); ?> > 
    <div id="xxx"> 
     <div class="control-group"> 
      <label class="control-label" for='emp_name'>Employer Name</label> 
      <div class="controls"> 
       <input type="text" name="work_emp_name" id="work_emp_name" 
         value="<?php echo (isset($wi['work_emp_name']) ? $wi['work_emp_name'] : ''); ?>"/> 
      </div> 
     </div> 

     <div class="control-group"> 
      <label class="control-label" for='work_date_start'>Date Started</label> 
      <div class="controls"> 
       <div class="input-append date" id="work_date_start_control" data-date="" data-date-format="yyyy-mm-dd"> 
        <input name="work_date_start" id="work_date_start" class="span2" size="16" type="text" readonly="" 
          value="<?php echo(isset($wi['work_date_start']) ? $wi['work_date_start'] : ''); ?>"/> 
        <span class="add-on"><i class="icon-calendar"></i></span> 
        <span class="help-block">yyyy-mm-dd format only.</span> 
       </div> 
      </div> 
     </div> 

     <div class="control-group"> 
      <label class="control-label" for='work_date_end'>Date Finished</label> 
      <div class="controls"> 
       <div class="input-append date" id="work_date_end_control" data-date="" data-date-format="yyyy-mm-dd"> 
        <input name="work_date_end" id="work_date_end" class="span2" size="16" type="text" readonly="" 
          value="<?php echo(isset($wi['work_date_end']) ? $wi['work_date_end'] : ''); ?>"/> 
        <span class="add-on"><i class="icon-calendar"></i></span> 
        <span class="help-block">yyyy-mm-dd format only.</span> 
       </div> 
      </div> 
     </div> 

     <div class="control-group"> 
      <label class="control-label" for='word_designation'>Designation</label> 
      <div class="controls"> 
       <input type="text" name="work_designation" id="work_designation" 
         value="<?php echo (isset($wi['work_designation']) ? $wi['work_designation'] : ''); ?>"/> 
      </div> 
     </div> 

     <div class="control-group"> 
      <label class="control-label" for='work_scope'>Scope of Work</label> 
      <div class="controls"> 
       <input type="text" name="work_scope" id="work_scope" 
         value="<?php echo (isset($wi['work_scope']) ? $wi['work_scope'] : ''); ?>"/> 
      </div> 
     </div> 

     <div class="control-group"> 
      <label class="control-label" for="">Appointment Letter from Employer</label> 
      <div class="controls"> 
       <input type="file" name="app_letter[]"/> 
      </div> 
     </div> 

     <div class="control-group"> 
      <label class="control-label" for="">Recommendation Letter from Employer</label> 
      <div class="controls"> 
       <input type="file" name="recommend_letter[]"/> 
      </div> 
     </div> 
     <div class="control-group"> 
      <label></label> 
      <div class="controls"> 
       <div class="btn-toolbar pull-right"> 
        <div class="btn-group"> 
         <a class="btn add_employer" href="#"><i class="icon-plus"></i>Add Employer</a> 
        </div> 
       </div> 
      </div> 
     </div> 
     <hr> 
    </div> 
</div> 

И JS -

var $formClone = $("#xxx").clone(true); 

$(".add_employer").click(function(e){ 
    e.preventDefault(); 
    $formClone.appendTo($("#word_exp_area")); 
}); 

Настройка JSFIDDLE HERE.

Add Employer кнопка произведение единовременный.

+0

попробовать, '.clone (правда, правда)' – benhowdle89

+0

я пытался. Это тоже не работает. – Gimali

+0

Скопированный div будет иметь тот же идентификатор, что и старый. Идентификаторы должны быть уникальными, вместо этого вы можете использовать css-классы. – Esko

ответ

3

Оказывается, если функция клонирования перемещается в обработчик кликов, все работает нормально. Fiddle:

$(".add_employer").click(function (e) { 
    var $formClone = $("#xxx").clone(true); 
    $formClone.appendTo($("#word_exp_area")); 
}); 
+0

да. Я использовал тот же объект и добавлял его в тот же контейнер. Поэтому функция обработчика вызывалась, но я не видел никаких изменений. – Gimali

Смежные вопросы