javascript - 日期时间选择器在 Javascript 代码中不起作用

标签 javascript jquery

当我将日期时间选择器放在 javascript 代码中时,它不起作用,但当它放在 javascript 外部时,它工作正常。如果有人可以解决这个问题,或者可以告诉我如何以类似于下面的方式访问放置在 javascript 代码之外的日期时间选择器。在下面的代码中,我根据选择框选择事件动态添加表单元素。

function addToFilter(divName)
{
  var val= document.getElementById('filter').value;
  var newdiv = document.createElement('div');
  switch(val)
  {
    case 'mcus': 
      newdiv.innerHTML = "Multi company use case &nbsp: "+ 
        "<select id='mcuc_selection'>"+
        "<option value='select'>--select--</option><option value='ags'>AGS</option><option value='agl'>AGL</option><option value='nafn'>NAFN</option></select>"+ 
        "&nbsp;<img id='remove-icon' src='remove-icon.jpg' alt='remove'  onmouseover='' style='cursor: pointer;'>"+
        "<hr style='width:700px; margin-left:0px;'>";
      break;

    case 'oc': 
      newdiv.innerHTML = "Order Condition &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: <select id='oc_selection'><option value='select'>--select--</option><option value='1'>1</option><option value='2'>2</option><option value='3'>3</option><option value='4'>4</option><option value='5'>5</option><option value='6'>6</option><option value='7'>7</option></select> &nbsp;<img id='remove-icon' src='remove-icon.jpg' alt='remove'  onmouseover='' style='cursor: pointer;'><hr style='width:700px; margin-left:0px;'>";
      break;

    case 'ot': 
      newdiv.innerHTML = "Order Type &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: <select id='oc_selection'><option value='select'>--select--</option><option value='shadow'>shadow</option><option value='customer'>customer</option></select> &nbsp;<img id='remove-icon' src='remove-icon.jpg' alt='remove'  onmouseover='' style='cursor: pointer;'><hr style='width:700px; margin-left:0px;'>";
      break;

    case 'dt': 
      newdiv.innerHTML = "Date&Time&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:"+
        "<div id='startDate' class='input-append date'>"+
        "<label>Start Date&Time: </label>"+
        "<input type='text' style='width:200px; height:15%'></input>"+
        "<span class='add-on' style='height:26px'>"+
        "<i id='dateIcon1' data-time-icon='icon-time' data-date-icon='icon-calendar'></i>"+
        "</span>"+
        "</div>"+
        "<div id='endDate' class='input-append date' style='margin-left:400px; margin-top:-30px'>"+
        "<label>End Date&Time:&nbsp;</label>"+
        "<input type='text' style='width:200px; height:15%'></input>"+
        "<span class='add-on' style='height:26px'>"+
        "<i id='dateIcon1' data-time-icon='icon-time' data-date-icon='icon-calendar'></i>"+
        "</span>"+
        "</div>"+
        "&nbsp;<img id='remove-icon' src='remove-icon.jpg' alt='remove'  onmouseover='' style='cursor: pointer;'><hr style='width:700px; margin-left:0px;'>";
      break;

  }
  document.getElementById(divName).appendChild(newdiv);
}


$('#startDate').datetimepicker({
  format: 'dd/MM/yyyy hh:mm:ss PP',
  language: 'en',
  pick12HourFormat: true
});
$('body').click(function (evt) {
  $(".startDate, .dropdown-menu").css("display","none");
});	
$('#endDate').datetimepicker({
  format: 'dd/MM/yyyy hh:mm:ss PP',
  language: 'en',
  pick12HourFormat: true
});
$('body').click(function (evt) {
  $(".endDate, .dropdown-menu").css("display","none");
});	

最佳答案

首先,在 addToFilter 函数中,当您从第二行为 startDate 和 endDate 添加日期时间选择器时,不能有两个具有相同 id 的元素,它将被复制,因此它不会以任何方式工作

其次,当您将 HTML 元素推送到 View 中时,需要调用日期时间选择器

所以你的代码将变成

function addToFilter(divName)
{
  var val= document.getElementById('filter').value;
  var newdiv = document.createElement('div');
  switch(val)
  {
    case 'mcus': 
      newdiv.innerHTML = "Multi company use case &nbsp: "+ 
        "<select id='mcuc_selection'>"+
        "<option value='select'>--select--</option><option value='ags'>AGS</option><option value='agl'>AGL</option><option value='nafn'>NAFN</option></select>"+ 
        "&nbsp;<img id='remove-icon' src='remove-icon.jpg' alt='remove'  onmouseover='' style='cursor: pointer;'>"+
        "<hr style='width:700px; margin-left:0px;'>";
      break;

    case 'oc': 
      newdiv.innerHTML = "Order Condition &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: <select id='oc_selection'><option value='select'>--select--</option><option value='1'>1</option><option value='2'>2</option><option value='3'>3</option><option value='4'>4</option><option value='5'>5</option><option value='6'>6</option><option value='7'>7</option></select> &nbsp;<img id='remove-icon' src='remove-icon.jpg' alt='remove'  onmouseover='' style='cursor: pointer;'><hr style='width:700px; margin-left:0px;'>";
      break;

    case 'ot': 
      newdiv.innerHTML = "Order Type &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: <select id='oc_selection'><option value='select'>--select--</option><option value='shadow'>shadow</option><option value='customer'>customer</option></select> &nbsp;<img id='remove-icon' src='remove-icon.jpg' alt='remove'  onmouseover='' style='cursor: pointer;'><hr style='width:700px; margin-left:0px;'>";
      break;

    case 'dt': 
      newdiv.innerHTML = "Date&Time&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:"+
        "<div class='startDatePicker input-append date'>"+
        "<label>Start Date&Time: </label>"+
        "<input type='text' style='width:200px; height:15%'></input>"+
        "<span class='add-on' style='height:26px'>"+
        "<i id='dateIcon1' data-time-icon='icon-time' data-date-icon='icon-calendar'></i>"+
        "</span>"+
        "</div>"+
        "<div class='endDatePicker input-append date' style='margin-left:400px; margin-top:-30px'>"+
        "<label>End Date&Time:&nbsp;</label>"+
        "<input type='text' style='width:200px; height:15%'></input>"+
        "<span class='add-on' style='height:26px'>"+
        "<i id='dateIcon1' data-time-icon='icon-time' data-date-icon='icon-calendar'></i>"+
        "</span>"+
        "</div>"+
        "&nbsp;<img id='remove-icon' src='remove-icon.jpg' alt='remove'  onmouseover='' style='cursor: pointer;'><hr style='width:700px; margin-left:0px;'>";
      break;

  }
  document.getElementById(divName).appendChild(newdiv);
  bindDatePickers($('#'+divName))
}

function bindDatePickers(element) {
    $($(element).find('.startDatePicker')).datetimepicker({
      format: 'dd/MM/yyyy hh:mm:ss PP',
      language: 'en',
      pick12HourFormat: true
    });

    $($(element).find('.endDatePicker')).datetimepicker({
      format: 'dd/MM/yyyy hh:mm:ss PP',
      language: 'en',
      pick12HourFormat: true
    });
}

$('body').click(function (evt) {
  $(".startDate, .dropdown-menu").css("display","none");
}); 
$('body').click(function (evt) {
  $(".endDate, .dropdown-menu").css("display","none");
});

关于javascript - 日期时间选择器在 Javascript 代码中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37672083/

相关文章:

javascript - 如何使用 Ruby 检测人脸?

javascript - 如何使用backbone和backbone.validation提交表单

javascript - 单击时如何选择多选选择框的所有选项?

Javascript - 小计不加分

javascript - Jquery 验证 div

javascript - 带有多个字段的图像的 JQuery ui 自动完成文本

javascript - 如何在打印时添加出现在每一页上的图像横幅?

javascript - webrtc pc.onaddstream window.URL.createObjectURl 远程视频未显示

javascript - 如何使用 JavaScript 触发深层 div 内的 Checkbox 的 onChange?

javascript - 如何从 Base 64 字符串获取 MIME-TYPE?