简体   繁体   English

jQuery中的动态添加类

[英]Dynamic add class in jquery

I want to add date picker dynamically in input field using jquery. 我想使用jQuery在输入字段中动态添加日期选择器。 It works for 1st text field. 它适用于第一个文本字段。 When I add a field it does not work. 当我添加一个字段时,它不起作用。 How can I fix that? 我该如何解决? Thanks In advance. 提前致谢。

<table class="table table-bordered" id="dynamic_field">
    <tr>
       <td><input type="text" name="name[]" placeholder="Enter your Name" class="form-control name_list" /></td>
       <td><input type="text" class="startdate form-control"/></td>
       <td><button type="button" name="add" id="add" class="btn btn-success">Add More</button></td>
    </tr>
</table>

Jquery jQuery的

$(document).ready(function(){
var i=1;
$('#add').click(function(){
    i++;
    $('#dynamic_field').append('<tr id="row'+i+'"><td><input type="text" name="name[]" placeholder="Enter your Name" class="form-control name_list" /></td><td><input type="text" class="startdate form-control"/></td>
  <td><button type="button" name="remove" id="'+i+'" class="btn btn-danger btn_remove">X</button></td></tr>');
  });

$(document).on('click', '.btn_remove', function(){
    var button_id = $(this).attr("id"); 
    $('#row'+button_id+'').remove();
  });   
});

datepicker 日期选择器

 $( ".startdate" ).datepicker({
  dateFormat: 'dd/mm/yy',
  changeMonth: true,
  changeYear: true,
  minDate: 0,
});

To implement datepicker on dynamically created input use on() . 要在动态创建的输入on()实现datepicker,请使用on() Please also notice the use of Template literals inside append() which is more cleaner and simpler: 另请注意,在append()使用了Template literals ,这更干净,更简单:

 $(document).ready(function(){ var i=1; $('#add').click(function(){ i++; $('#dynamic_field').append(`<tr id="row${i}"><td><input type="text" name="name[]" placeholder="Enter your Name" class="form-control name_list" /></td><td><input type="text" class="startdate form-control"/></td> <td><button type="button" name="remove" id="${i}" class="btn btn-danger btn_remove">X</button></td></tr>`); }); $(document).on('click', '.btn_remove', function(){ var button_id = $(this).attr("id"); $('#row'+button_id+'').remove(); }); }); $(document).on("focus", ".startdate", function(){ $(this).datepicker({ dateFormat: 'dd/mm/yy', changeMonth: true, changeYear: true, minDate: 0, }); }); 
 <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css"> <link rel="stylesheet" href="/resources/demos/style.css"> <script src="https://code.jquery.com/jquery-1.12.4.js"></script> <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script> <table class="table table-bordered" id="dynamic_field"> <tr> <td><input type="text" name="name[]" placeholder="Enter your Name" class="form-control name_list" /></td> <td><input type="text" class="startdate form-control"/></td> <td><button type="button" name="add" id="add" class="btn btn-success">Add More</button></td> </tr> </table> 

Add simply a datepicker() function to your last created input , 只需将datepicker()函数添加到最后创建的输入中,

using 使用

$('#dynamic_field').last("tr").find(".startdate").datepicker({
    dateFormat: 'dd/mm/yy',
    changeMonth: true,
    changeYear: true,
    minDate: 0,
  });

also ,when removing this input you have also to destroy datepicker attached to it as below 另外,删除此输入时,还必须销毁连接到它的datepicker,如下所示

  $( '#row' + button_id ).datepicker( "destroy" );
  $( '#row' + button_id ).removeClass("hasDatepicker").removeAttr('id');

See below Snippet : 请参见下面的代码段:

 $(function() { var i = 1; $('#add').click(function() { i++; $('#dynamic_field').append('<tr id="row' + i + '"><td><input type="text" name="name[]" placeholder="Enter your Name" class="form-control name_list" /></td><td><input type="text" class="startdate form-control"/></td> <td > <button type = "button" name = "remove"id = "' + i + '" class = "btn btn-danger btn_remove" > X </button></td ></tr>'); $('#dynamic_field').last("tr").find(".startdate").datepicker({ dateFormat: 'dd/mm/yy', changeMonth: true, changeYear: true, minDate: 0, }); }); $(".startdate").datepicker({ dateFormat: 'dd/mm/yy', changeMonth: true, changeYear: true, minDate: 0, }); $(document).on('click', '.btn_remove', function() { var button_id = $(this).attr("id"); $( '#row' + button_id ).datepicker( "destroy" ); $( '#row' + button_id ).removeClass("hasDatepicker"); $('#row' + button_id+'' ).remove(); }); }) 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/datepicker/0.6.5/datepicker.js"></script> <link href="https://cdnjs.cloudflare.com/ajax/libs/datepicker/0.6.5/datepicker.css" rel="stylesheet" /> <table class="table table-bordered" id="dynamic_field"> <tr> <td><input type="text" name="name[]" placeholder="Enter your Name" class="form-control name_list" /></td> <td><input type="text" class="startdate form-control" /></td> <td><button type="button" name="add" id="add" class="btn btn-success">Add More</button></td> </tr> </table> 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM