jquery - 如何在自动调整大小时设置日期搜索工具栏字段宽度

标签 jquery css html jqgrid free-jqgrid

我*正在寻找一种在自动调整大小时设置日期工具栏搜索字段宽度的方法。

我尝试了来自

的代码

How to make html5 date field in search toolbar to respect column width

评论:

var serverResponse = {
        "page": "1",
        "records": "3",
        "rows": [
            { "Id": "1", IsActive: "2015-01-09" },
            { "Id": "2", IsActive: "2015-01-05" },
            { "Id": "3", IsActive: "2015-01-21" }
        ]
    },    
    dateTemplate = {
        sorttype: "date",
        formatter: "date",
        formatoptions: {
            srcformat: "Y-m-d",
            reformatAfterEdit: true
        },
        autoResizing: { minColWidth: 50 },
        autoResizable: true,
        width: 100,
        editoptions: {
            maxlength: 10,
            size: 10
        },
        editable: true,
        searchoptions: {
            sopt: ["eq", "ne", "lt", "le", "gt", "ge"],
            size: 10,
            clearSearch: false,
            attr: { size: 10, type: "date", style: "width:11em;" }
        }
    },
    $grid = $("#categorysummary");

$grid.jqGrid({
    url: "/echo/json/",
    datatype: "json",
    mtype: "POST",
    postData: {
        json: JSON.stringify(serverResponse)
    },
    colNames: ["Active", "Second"],
    colModel: [
        { name: "IsActive", template: dateTemplate },
        { name: "Second", width: 85 }
    ],
    resizeStop: function (newWidth, iCol) {
        var colModel = $(this).jqGrid("getGridParam", "colModel");
    if ($("#gs_" + $.jgrid.jqID(colModel[iCol].name)).attr("type") === "date") {

                $("#gs_IsActive").width(newWidth - 7); // - padding
        }
    },
    jsonReader: {
        id: "Id",
        repeatitems: false
    },
    viewrecords: true
}).jqGrid("filterToolbar");
$(".ui-search-table input[type=date]").each(function() {
    $(this).css("width", $(this).closest("th.ui-th-column").width() + "px");
});

CSS:

<div class="container">
    <table id="categorysummary"></table>
</div>

参见 fiddle http://jsfiddle.net/10qwgejj/13/

双击事件列标题搜索元素中的列分隔线后,搜索元素太大,列边框从搜索工具栏中消失。

overlap 要在自动调整大小时设置搜索字段宽度?

安德鲁斯。

最佳答案

我实现了(参见 the commit)新回调 afterResizeDblClick 和新事件 jqGridAfterResizeDblClick,这使得解决方案变得非常简单。

它使用下面的代码

var adjustSearchingDateField = function (cmName, newWidth) {
    var $searchingField = $("#gs_" + $.jgrid.jqID(cmName));
    if ($searchingField.attr("type") === "date") {
        $searchingField.width(newWidth - 7); // - padding
    }
};

...
resizeStop: function (newWidth, iCol) {
    var colModel = $(this).jqGrid("getGridParam", "colModel");
    adjustSearchingDateField(colModel[iCol].name, newWidth);
},
afterResizeDblClick: function (options) {
    adjustSearchingDateField(options.cmName, options.cm.width);
},
...

查看演示 http://jsfiddle.net/OlegKi/10qwgejj/14/

关于jquery - 如何在自动调整大小时设置日期搜索工具栏字段宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34577349/

相关文章:

jQuery Lightbox 帮助

css - 溢出实际上是如何在这里工作的?

jQuery appendTo div 位于具有唯一 id 的 div 中

javascript - IE 中的 Jquery 堆栈溢出

jquery - 输入验证 - 样式

javascript - 在 materialize css 中增加轮播高度

android - Phonegap 默认主题不显示带有箭头符号的 ListView

javascript - 为什么此代码在 chrome、firefox 等中不起作用?

jQuery - 如果 div 位于窗口顶部,添加类/样式? (粘性横幅)

css - 如何对 CSS grid-item 元素进行平方?如何设置与宽度相同的高度?