[英]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.