引导日期时间选取器不适用于动态字段
Bootstrap Datetimepicker not working with dynamic field
我有当前的代码,它是引导日期时间选择器 Bootstrap 3 日期选择器,我当前的问题是,当我单击"添加更多字段"时,带有日期计时器选择器文本字段的新div 不起作用,关于它可能是什么的任何想法?
<script type="text/javascript">
$(document).ready(function() {
var max_fields = 5; //maximum input boxes allowed
var wrapper = $(".input_fields_wrap"); //Fields wrapper
var add_button = $(".add_field_button"); //Add button ID
var x = 1; //initlal text box count
$(add_button).click(function(e){ //on add input button click
e.preventDefault();
if(x < max_fields){ //max input box allowed
x++; //text box increment
$(wrapper).append('<div>'
<div class="input-group date datepicker_init">'
<input class="form-control" type="text" name="mytext[]">'
<span class="input-group-addon">'
<span class="glyphicon glyphicon-calendar"></span>'
</span>'
</div>'
<div class="input-group date datepicker_end">'
<input class="form-control" type="text" name="mytext[]">'
<span class="input-group-addon">'
<span class="glyphicon glyphicon-calendar"></span>'
</span>'
</div>'
<a href="#" class="remove_field red-color">Remove</a>'
<div class="voffset10"></div>'
</div>'
');
}
});
$(wrapper).on("click",".remove_field", function(e){ //user click on remove text
e.preventDefault(); $(this).parent('div').remove(); x--;
})
$('.datepicker_init').datetimepicker({
locale: 'es',
format: 'YYYY-MM-DD HH:mm'
});
$('.datepicker_end').datetimepicker({
locale: 'es',
format: 'YYYY-MM-DD HH:mm',
useCurrent: false
});
$(".datepicker_init").on("dp.change", function (e) {
$('.datepicker_end').data("DateTimePicker").minDate(e.date);
});
$(".datepicker_end").on("dp.change", function (e) {
$('.datepicker_init').data("DateTimePicker").maxDate(e.date);
});
});
</script>
<div class="form-group">
<div class="input_fields_wrap">
<button class="add_field_button btn btn-info btn-block voffset10">Add More Fields</button>
<div>
<div class='input-group date datepicker_init'>
<input class="form-control" type="text" name="mytext[]">
<span class="input-group-addon">
<span class="glyphicon glyphicon-calendar"></span>
</span>
</div>
<div class='input-group date datepicker_end'>
<input class="form-control" type="text" name="mytext[]">
<span class="input-group-addon">
<span class="glyphicon glyphicon-calendar"></span>
</span>
</div>
</div>
<div class="voffset10">
</div>
</div>
更新的部分
$(".datepicker_init").on("dp.change", function (e) {
$('.datepicker_end').data("DateTimePicker").minDate(e.date);
});
$(".datepicker_end").on("dp.change", function (e) {
$('.datepicker_init').data("DateTimePicker").maxDate(e.date);
});
在
附加新 html 后立即在单击处理程序中调用日期选择器 init 脚本,如下所示:
$(add_button).click(function(e){
// on add input button click
e.preventDefault();
// max input box allowed
// Reduce nesting!
if(x >= max_fields){
return
}
//text box increment
x++;
var tmp = $(wrapper).append('<div>'
<div class="input-group date datepicker_init">'
<input class="form-control" type="text" name="mytext[]">'
<span class="input-group-addon">'
<span class="glyphicon glyphicon-calendar"></span>'
</span>'
</div>'
<div class="input-group date datepicker_end">'
<input class="form-control" type="text" name="mytext[]">'
<span class="input-group-addon">'
<span class="glyphicon glyphicon-calendar"></span>'
</span>'
</div>'
<a href="#" class="remove_field red-color">Remove</a>'
<div class="voffset10"></div>'
</div>');
// Init the new pickers
$('.datepicker_init', tmp).datetimepicker({
locale: 'es',
format: 'YYYY-MM-DD HH:mm'
});
$('.datepicker_end', tmp).datetimepicker({
locale: 'es',
format: 'YYYY-MM-DD HH:mm',
useCurrent: false
});
});
首先,当 $(document).ready 不在动态div 创建时间中时,您的日期时间选择器绑定发生在div 上,因为add_button单击事件创建您的动态div,这次不是绑定日期时间选择器。 因此,在创建动态div 后,您必须同时绑定此div 的日期时间选择器。 以下更改可以帮助您了解-
将下面的代码放在任何函数上,并在两个时间(即在document.ready时间和div创建时间)调用此函数
function yourfunction(){
$('.datepicker_init').datetimepicker({
locale: 'es',
format: 'YYYY-MM-DD HH:mm'
});
$('.datepicker_end').datetimepicker({
locale: 'es',
format: 'YYYY-MM-DD HH:mm',
useCurrent: false
});
}
所以最后你的脚本看起来像这样
$(document).ready(function() {
var max_fields = 5; //maximum input boxes allowed
var wrapper = $(".input_fields_wrap"); //Fields wrapper
var add_button = $(".add_field_button"); //Add button ID
var x = 1; //initlal text box count
$(add_button).click(function(e){ //on add input button click
e.preventDefault();
if(x < max_fields){ //max input box allowed
x++; //text box increment
$(wrapper).append('<div>'
<div class="input-group date datepicker_init">'
<input class="form-control" type="text" name="mytext[]">'
<span class="input-group-addon">'
<span class="glyphicon glyphicon-calendar"></span>'
</span>'
</div>'
<div class="input-group date datepicker_end">'
<input class="form-control" type="text" name="mytext[]">'
<span class="input-group-addon">'
<span class="glyphicon glyphicon-calendar"></span>'
</span>'
</div>'
<a href="#" class="remove_field red-color">Remove</a>'
<div class="voffset10"></div>'
</div>'
');
}
yourfunction();
});
$(wrapper).on("click",".remove_field", function(e){ //user click on remove text
e.preventDefault(); $(this).parent('div').remove(); x--;
})
yourfunction();
$(".datepicker_init").on("dp.change", function (e) {
$('.datepicker_end').data("DateTimePicker").minDate(e.date);
});
$(".datepicker_end").on("dp.change", function (e) {
$('.datepicker_init').data("DateTimePicker").maxDate(e.date);
});
});
相关文章:
- html5 drawImage适用于firefox,而不是chrome
- Jquery Ajax POST不工作.适用于GET
- 如何调试遗留的javascript代码(适用于IE,但在Google Chrome中不正常)
- .load()适用于window,而不是ID
- 使用Jquery更改css样式适用于id's、 不在课堂上
- 提交按钮不会;不适用于Chrome或Firefox,但适用于Internet Explorer
- 为什么 javascript 中的“btoa”编码适用于 20 位字符串而不是 20 位整数
- Javascript String to Date适用于Chrome,而不是FF或Safari
- Onchange,向上,向下箭头键适用于FF和Chrome,但在IE中不起作用
- .load() 适用于 IE 和 dreamweaver 预览版,但不能使用 opera 和 chrome
- 找不到适用于 Highcharts 的 JSON 数组语法
- 为什么在jQuery中使用focusout适用于Firefox,而使用addEventListener则不适用;t
- jQuery选择菜单验证器适用于FF和Chrome,但不适用IE
- 单选按钮'onclick'适用于Chrome和Firefox,但不适用IE
- JQuery ScrollTop适用于chrome,但不适用firefox
- window.opener.location.href适用于IE,但不适用Chrome或Safari
- Frame Busting buster不完全适用于IE
- Jquery touch punch适用于Chrome和Firefox,但不适用IE
- 背景更改仅适用于chrome+$.预加载不适用;不起作用
- JavaScript window.location.replace适用于Firefox,但不适用IE或Chrome