javascript - 无法在日期选择器中添加图像

标签 javascript jquery jqgrid timepicker

我在 .jqGrid 中使用 .timepickerfilterToolbar。我想在过滤器栏旁边添加一个图像,用户应该在其中看到他们单击图像的时间。

如果我只使用 $(element).timepicker(); 那么我会在点击过滤器栏时看到时间,但是当我执行以下操作时,timepicker 不是完全可以工作。

$(element).timepicker({
                showOn: "button",
                buttonImage: "https://jqueryui.com/resources/demos/datepicker/images/calendar.gif",
                buttonImageOnly: true,
          });

相同的选项适用于 datepicker。我在这里错过了什么?这是因为 jquery.timepicker.js 版本吗?

工作演示

$(function() {
  "use strict";

  $("#grid").jqGrid({
    colModel: [{
      name: "StartRunTime",
      label: "Start Run Time",
      align: "center",
      sorttype: "time",
      formatter: "time",
      searchoptions: {
        dataInit: function(element) {
          $(element).timepicker();
        }
      }
    }],
    data: [{
      StartRunTime: "12:00"
    }],
   
    caption: ".jqGrid Test"
  }).jqGrid('filterToolbar', {
    autoSearch: true
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.2/jquery-ui.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/free-jqgrid/4.14.1/jquery.jqgrid.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-timepicker/1.8.9/jquery.timepicker.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/free-jqgrid/4.14.1/css/ui.jqgrid.min.css" rel="stylesheet" />
<link href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/themes/redmond/jquery-ui.min.css" rel="stylesheet" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jquery-timepicker/1.8.9/jquery.timepicker.css">

<table id="grid"></table>

演示无效

$(function() {
  "use strict";

  $("#grid").jqGrid({
    colModel: [{
      name: "StartRunTime",
      label: "Start Run Time",
      align: "center",
      sorttype: "time",
      formatter: "time",
      searchoptions: {
        dataInit: function(element) {
          $(element).timepicker({
           		showOn: "button",
          		buttonImage: "https://jqueryui.com/resources/demos/datepicker/images/calendar.gif",
            	buttonImageOnly: true,
          });
        }
      }
    }],
    data: [{
      StartRunTime: "12:00"
    }],
   
    caption: ".jqGrid Test"
  }).jqGrid('filterToolbar', {
    autoSearch: true
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.2/jquery-ui.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/free-jqgrid/4.14.1/jquery.jqgrid.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-timepicker/1.8.9/jquery.timepicker.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/free-jqgrid/4.14.1/css/ui.jqgrid.min.css" rel="stylesheet" />
<link href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/themes/redmond/jquery-ui.min.css" rel="stylesheet" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jquery-timepicker/1.8.9/jquery.timepicker.css">

<table id="grid"></table>

最佳答案

那不是有效的选项,但你可以像这样插入图像和监听器

$(document).on("click", ".showCalendar", function(){
  $("#gs_grid_StartRunTime").timepicker('show');
});
$('#gs_grid_StartRunTime').parent()
  .after('<td><img class="showCalendar" src="https://jqueryui.com/resources/demos/datepicker/images/calendar.gif"></td>');

演示:

$(function() {
  "use strict";

  $("#grid").jqGrid({
    colModel: [{
      name: "StartRunTime",
      label: "Start Run Time",
      align: "center",
      sorttype: "time",
      formatter: "time",
      searchoptions: {
        dataInit: function(element) {
          $(element).timepicker();
        }
      }
    },
    {
					label: "Concept Name",
					name: "ConceptName",
					key: true,
					width: 100,
					align: "center"
				}],
    data: [{
      StartRunTime: "12:00",
      ConceptName: "ABC"
    }],

    caption: ".jqGrid Test"
  }).jqGrid('filterToolbar', {
    autoSearch: true
  });
  $(document).on("click", ".showCalendar", function(){
  	$("#gs_grid_StartRunTime").timepicker('show');
  });
  $('#gs_grid_StartRunTime').parent().after('<td><img class="showCalendar" src="https://jqueryui.com/resources/demos/datepicker/images/calendar.gif"></td>');
  
});
.showCalendar {
	margin: 0px 2px;
	cursor: pointer;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.2/jquery-ui.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/free-jqgrid/4.14.1/jquery.jqgrid.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-timepicker/1.8.9/jquery.timepicker.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/free-jqgrid/4.14.1/css/ui.jqgrid.min.css" rel="stylesheet" />
<link href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/themes/redmond/jquery-ui.min.css" rel="stylesheet" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jquery-timepicker/1.8.9/jquery.timepicker.css">

<table id="grid"></table>

关于javascript - 无法在日期选择器中添加图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45195117/

相关文章:

javascript - 未捕获的类型错误 : Cannot read property 'ownerDocument' of undefined

javascript - AngularJS:使用特定键以模式更新 JSON

javascript - 编辑格式化的时刻对象

javascript - 动态地将 <td> 添加到表中

JQgrid : specific value from a selected row

jquery - 如何使搜索工具栏中的 html5 日期字段尊重列宽

javascript - JS,向函数添加参数

javascript - 多个元素的相同点击事件,具体情况

javascript - 选择单选按钮时隐藏/显示 div

jqgrid - 垂直列方向