动态创建的输入字段上的日期范围选取器
Daterangepicker on dynamically created input field
I use daterangerpicker github link.我想在按下按钮时使用javascript创建新的输入字段。如何使日期范围选取器脚本正常工作?我不是JavaScript专家,对不起我的愚蠢脚本:(
这不起作用:
<script type='text/javascript'>
function add()
{
var randnum = Math.floor((Math.random() * 100) + 1);
var cont_div = document.getElementById('content');
var text = document.createElement('div');
var plus_row = '<p><label>day:';
plus_row += '<input style="width:300px;" name="new_'+randnum+'_date" type="text" id="new_'+randnum+'_date" size="60" value="">';
plus_row += '</label></p>';
plus_row += '<script type="text/javascript">';
plus_row += "$('#new_"+randnum+"_date').dateRangePicker(";
plus_row += "{autoClose: true,separator: ' - ',startOfWeek: 'monday',singleDate : false,timePicker: true,timePickerIncrement: 30,";
plus_row += "startDate: '2016-01-01',language: 'en',format: 'YYYY-MM-DD HH:mm',showShortcuts: false,time: {enabled: true} });";
plus_row += "$('#new_"+randnum+"_date').data().daterangepicker.updateCalendars();";
plus_row += "</scr"+"ipt>";
text.innerHTML = plus_row;
cont_div.appendChild(text);
}
<body>
<p>Please select a date
<div id="content">
<p><label>day:
<input style="width:300px;" name="date1" type="text" id="date1" size="60" value="">
</label></p>
<input type="button" id="more" onclick="add();" value="+">
</div>
</p>
<script type="text/javascript">
$('#date1').dateRangePicker(
{ autoClose: true,
separator: ' - ',
startOfWeek: 'monday',
singleDate : false,
timePicker: true,
timePickerIncrement: 30,
startDate: '2016-01-01',
language: 'en',
format: 'YYYY-MM-DD HH:mm',
showShortcuts: false,
time:
{
enabled: true
}
});
</script>
我尝试了其他方式:使用类(一个类中的每个输入)但不起作用
$('.date_class').dateRangePicker(
plus_row += '<input style="width:300px;" name="new_'+randnum+'_date" type="text" class="date_class" size="60" value="">';
没有脚本部分:
plus_row += '<script type="text/javascript">'; ... plus_row += "</scr"+"ipt>";
非常感谢您的帮助!
你的代码应该是这样的:
脚本.js
$(function(){
$('#date1').dateRangePicker(
{ autoClose: true,
separator: ' - ',
startOfWeek: 'monday',
singleDate : false,
timePicker: true,
timePickerIncrement: 30,
startDate: '2016-01-01',
language: 'en',
format: 'YYYY-MM-DD HH:mm',
showShortcuts: false,
time:
{
enabled: true
}
});
add=function()
{
var randnum = Math.floor((Math.random() * 100) + 1);
var cont_div = document.getElementById('content');
var text = document.createElement('div');
var plus_row = '<p><label>day:';
plus_row += '<input style="width:300px;" name="new_'+randnum+'_date" type="text" id="new_'+randnum+'_date" size="60" value="">';
plus_row += '</label></p>';
text.innerHTML = plus_row;
cont_div.appendChild(text);
$('#new_'+randnum+'_date').dateRangePicker(
{ autoClose: true,
separator: ' - ',
startOfWeek: 'monday',
singleDate : false,
timePicker: true,
timePickerIncrement: 30,
startDate: '2016-01-01',
language: 'en',
format: 'YYYY-MM-DD HH:mm',
showShortcuts: false,
time:
{
enabled: true
}
});
}
});
索引.html
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="https://code.jquery.com/jquery-1.11.3.min.js"></script>
<link rel="stylesheet" href=" https://longbill.github.io/jquery-date-range-picker/daterangepicker.css" />
<script src="https://longbill.github.io/jquery-date-range-picker/moment.min.js"></script>
<script src="https://longbill.github.io/jquery-date-range-picker/jquery.daterangepicker.js"></script>
<script src="script.js"></script>
</head>
<body>
<div id="content">
<p><label>day:
<input style="width:300px;" name="date1" type="text" id="date1" size="60" value="">
</label>
</p>
<input type="button" id="more" onclick="add();" value="+">
</div>
</body>
</html>
这是一个工作演示
一种
不同的函数方法,它解决了所有这些字符串连接和随机创建的 id
//an utility, because i don't like $('<nodeName>'), because of the way it works
//simply creates a jquery wrapped node
function $n(nn){ return $(document.createElement(nn||'div')) }
function add(){
//give it a proper (non randomized) name, so the backend can find the value
//and what do you need a (random) id for? you have a reference.
var $input = $n('input').attr({ size: 60 }).width(300);
//removed the (anonymous) div
$n('p').insertBefore('#more').append(
$n('label').text("day: ").append( $input )
)
$input.dateRangePicker({
autoClose: true,
separator: ' - ',
startOfWeek: 'monday',
singleDate : false,
timePicker: true,
timePickerIncrement: 30,
startDate: '2016-01-01',
language: 'en',
format: 'YYYY-MM-DD HH:mm',
showShortcuts: false,
time: {enabled: true}
});
$input.data().daterangepicker.updateCalendars();
}
相关文章:
- 正在全局范围中查找JavaScript函数
- 如何通过数组更新角度子范围
- 如何在引导日期选取器中限制可选择的日期范围
- 24小时格式的日期范围选取器
- 如何在eonasdan Bootstrap 3 Datepicker上重置链接选取器的日期范围
- 正在将日期范围选取器的开始日期设置为空
- 日期范围选取器在关闭时会丢失范围
- 将 JSON 数据绑定到日期范围选取器日历
- 如何在引导日期范围选取器日期更改时更新绑定
- 日期范围选取器 在两个日历上显示结束日期
- 日期范围选取器输入字段不是 24 小时格式
- 使用 jQuery 创建两个日期选取器日期范围实例
- 动态创建的输入字段上的日期范围选取器
- 日期选取器日期范围:最大日期的最小日期 = 开始日期 + 1 天
- 如果单击日期选取器字段,则必须显示两个日期范围日历
- 日期范围选取器-无效日期
- JQuery:日期范围选取器
- 启动日期范围选取器禁用日期
- 在Jquery日期选取器中未获取完整的月份范围
- 使用日期时间选取器的多个实例来处理日期之间的范围