【问题标题】:Jquery datepicker icon position is incorrectJquery datepicker图标位置不正确
【发布时间】:2014-09-09 22:17:06
【问题描述】:

我的日历图像位于日期选择器的文本框下方。我该如何解决这种错位。

这是我的屏幕截图:! 1:http://i.stack.imgur.com/3uifN.jpg

在此处查看 jsfiddle:jsfiddle.net/njiterry/yNw3C/8477

这是我的jsp代码:

     <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
         pageEncoding="ISO-8859-1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Country Visibility</title>

<link rel="stylesheet" type="text/css" media="screen" href="css/jquery-ui.min.css" />
<link rel="stylesheet" type="text/css" media="screen" href="css/ui.jqgrid.css" />

<script src="js/jquery-1.11.0.min.js" type="text/javascript"></script>

<script src="js/grid.locale-en.js" type="text/javascript"></script>

<script src="js/jquery.jqGrid.min.js" type="text/javascript"></script>
<script src="js/jquery-ui.min.js" type="text/javascript"></script>
<script type="text/javascript">


$(document).ready(function(){

    var mydata = [
        { Sel: true, Country : "Germany", Capital : "Berlin", Date: "05-09-2014"},
        { Sel: true, Country : "France", Capital : "Paris", Date: "05-09-2014" },
        { Sel: true, Country : "Cameroon", Capital : "Yaounde", Date: "06-09-2014" },
        { Sel: true, Country : "Gabon", Capital : "Libreville", Date: "06-09-2014" },
        { Sel: true, Country : "Holland", Capital : "Amsterdam", Date: "07-09-2014" },
        { Sel: true, Country : "Japan", Capital : "Tokyo", Date: "08-09-2014" },
        { Sel: true, Country : "Italy", Capital : "Rome" , Date: "09-09-2014"},
        { Sel: true, Country : "Spain", Capital : "Madrid" , Date: "09-09-2014"},
        { Sel: true, Country : "England", Capital : "London" , Date: "10-09-2014"},
        { Sel: true, Country : "US", Capital : "Washington D.C." , Date: "12-09-2014"}
    ];

    var grid = jQuery("#pays_grid");

    var initDateWithButton = function (elem) {
        if (/^\d+%$/.test(elem.style.width)) {
            // remove % from the searching toolbar
            elem.style.width = '';
        }
        // to be able to use 'showOn' option of datepicker in advance searching dialog
        // or in the editing we have to use setTimeout
        setTimeout(function () {
            $(elem).datepicker({
                dateFormat: 'dd-mm-yy',
                showOn: 'button',
                changeYear: true,
                changeMonth: true,     
                buttonImageOnly: true,
                buttonImage: "images/calendar.gif",
                buttonText: "Select date",            
                onSelect: function (dateText, inst) {
                    if (inst.id.substr(0, 3) === "gs_") {
                         grid[0].triggerToolbar();
                    }
                    else {
                        // to refresh the filter
                        $(inst).trigger("change");
                    }
                }
            });

        $(".ui-datepicker-trigger").css({
            position: "relative",
            marginLeft: "1px",
            marginTop: "0px",
            });
        }, 100);
    };
    grid.jqGrid({ //set your grid id
    data: mydata, //insert data from the data object we created above
    datatype: 'local',
    height: 230,
    autoheight: true,
    width: 800,
    rowNum: 10,
    rowList: [1, 5, 10],

    colNames:['Sel.','Id','Name', 'Date'], //define column names
    colModel:[
       {name: 'Sel', align: 'center', sortable: false, width: 25, search: false, editable: true, edittype: 'checkbox', 
              editoptions: { value: "True:False" }, formatter: "checkbox", formatoptions: { disabled: false} },
       {name:'Country', index:'Country', key: true, width:50, align:'center'},
       {name:'Capital', index:'Capital', width:100, align:'center'},
       {name: 'Date', index: 'Date', align: 'center', width: 100}
    ], //define column models

    pager: '#pager', //set your pager div id
    sortname: 'Country', //the column according to which data is to be sorted; optional
    viewrecords: true, //if true, displays the total number of records, etc. as: "View X to Y out of Z” optional
    sortorder: "asc", //sort order; optional
    sortname: 'Country',
    shrinkToFit: true,
    forceFit: true,
    caption: "Country Overview", //title of grid
    loadComplete: function() { 
        grid.jqGrid('setColProp', 'Date', {
            sorttype: 'date', editable: true,
                editoptions: { dataInit: initDateWithButton, size: 11 },
                searchoptions: {
                    sopt: ['eq', 'ne', 'lt', 'le', 'gt', 'ge'],
                    dataInit: initDateWithButton,
                  //  size: 8,          // for the advanced searching dialog
                   // attr: {size: 8}   // for the searching toolbar
                }
        });   
        grid.jqGrid('filterToolbar', {autoSearch: true});
    }
    }).navGrid('#truck_grid_pager', {edit: false, add: false, del: false, search: false, refresh: true});


});


</script>
</head>
<body>
<table id="pays_grid"></table>
<div id="pager"></div>
</body>
</html>

我曾尝试在 Stack Overflow 上查看类似的问题,但我无法让触发器图像与输入内联显示。

【问题讨论】:

  • 你是否包含了 jQueryUI 样式表?
  • @HelpNeeder:是的,我做到了
  • 请用jsfiddle演示一下好吗?
  • 在此处查看 jsfiddle:jsfiddle.net/njiterry/yNw3C/8477

标签: javascript jquery css jqgrid datepicker


【解决方案1】:

在我看来你应该使用

.ui-jqgrid .ui-search-table .ui-search-input > input,
.ui-jqgrid .ui-search-table .ui-search-input > select,
.ui-jqgrid .ui-search-table .ui-search-input > img {
    vertical-align: middle;
    display: inline-block;
}

http://jsfiddle.net/yNw3C/8486/

【讨论】:

  • 这看起来真的很棒。谢谢。我应该在哪里添加这个 css 代码?
  • @Terry:不客气!您可以在&lt;link ... href=".../ui.jqgrid.css"/&gt; 之后直接添加&lt;style type="text/css"&gt;...&lt;/style&gt; 块和CSS 规则。
  • 它就像一个魅力。我是 jqgrid 的新手,我一直在使用你的 jqgrid 答案。您全面的技术知识给我留下了深刻的印象,但最重要的是您的耐心和帮助他人的热情。脱帽致敬!
  • 你知道为什么这个 jsfiddle 不起作用http://jsfiddle.net/njiterry/p9n8qq0x/5/。 jquery 1.6.2 版本不可用,所以我使用 jquery 1.7.2。 javascript和css代码和你的一样。
  • @Terry:您应该包含具有完整路径的外部资源,例如http://ajax.googleapis.com/ajax/libs/jqueryui/1.11.0/themes/redmond/jquery-ui.csshttp://cdnjs.cloudflare.com/ajax/libs/jqgrid/4.6.0/css/ui.jqgrid.csshttp://cdnjs.cloudflare.com/ajax/libs/jqgrid/4.6.0/js/i18n/grid.locale-en.jshttp://cdnjs.cloudflare.com/ajax/libs/jqgrid/4.6.0/js/jquery.jqGrid.min.js(请参阅cdnjs.com/libraries/jqgrid)。见jsfiddle.net/p9n8qq0x/6
【解决方案2】:

将显示内联样式添加到包含日期的文本框 然后调整您的日期选择器图像的页边距顶部,使其看起来不错并与您的文本框对齐。

在这里查看:http://jsfiddle.net/saxenaabhi6/yNw3C/8479/

#gs_Date{
display:inline
}

【讨论】:

  • 感谢 Abs。非常感谢
【解决方案3】:

而不是设置

 position='relative'

设置

position='absolute'

并相应地调整顶部和左侧。这是一个小提琴:

http://jsfiddle.net/ey170t1z/1/

【讨论】:

    【解决方案4】:

    在 CSS 中:

    .ui-datepicker-trigger {
     vertical-align: top;
     height: 24px; /* the same of textbox */
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多