javascript - 如何在 Kendo UI 中设置组合框的自动宽度?

标签 javascript jquery css kendo-ui kendo-combobox

我想根据绑定(bind)到组合框的最长文本自动设置组合框宽度,所以我尝试如下所示,但我只能看到下拉菜单的自动大小(宽度)(下拉菜单单击组合框的组合时,长度仍然大于预期,总长度应减少到仅包含 3 个字符,我在这里遗漏了什么吗?

enter image description here

<input id="combobox" />

$("#combobox").kendoComboBox({
  index: 0,
  dataSource: {
    data: ["One", "Two"]
  }
});
var comboBox = $("#combobox").data("kendoComboBox");
comboBox.list.width("auto");
$("#combobox").width(parseInt($("#combobox").css("width")));

http://jsfiddle.net/KendoDev/Z4rwQ/

最佳答案

我想您可以确定数据源本身的长度,然后调整组合框的大小。这适用于演示元素,但我想根据样式和填充,您可能需要对调整大小的技术进行更多改进。

这决定了元素的大小(同样,如果您在数组中使用对象而不是字符串,您可能需要对其进行一些改进(如果您愿意,可以传递 displayMember)

function determineWidth(ds) {
    var l = ds.length, selement = document.createElement('span'), maxwidth = 0, curwidth = 0;
    selement.style = 'position: fixed; left: -500px; top: -500px;';
    document.body.appendChild(selement);
    for (var i = 0; i < l; i++) {
        $(selement).html(ds[i]);
        curwidth = $(selement).width();
        if (curwidth < maxwidth) {
            continue;
        }
        maxwidth = curwidth;
    }
    document.body.removeChild(selement);
    return curwidth + 24;
}

在组合框中,您可以绑定(bind)到 dataBound 事件,确定元素的大小,并更新容器和父级以匹配实际大小

$("#combobox").kendoComboBox({
    index: 0,
    dataSource: {
        data: ["One", "Two", "Hundred"]
    },
    dataBound: function() {
        var width = determineWidth(this.dataSource.data());
        $('#combobox-container').find('span>.k-dropdown-wrap').width(width).parent().width(width);
    }
});
var comboBox = $("#combobox").data("kendoComboBox");

您可以在这里找到 fiddle :http://jsfiddle.net/Icepickle/gLbLtjhf/

关于javascript - 如何在 Kendo UI 中设置组合框的自动宽度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25106453/

相关文章:

javascript - 获取具有子数组 json 值的数组的值

jquery - Geojson(获取 JSON)并删除 Leaflet 上的突出显示(鼠标移出)

javascript - 原型(prototype)函数不运行 onclick 并且无论如何都不能正确执行

css - Zurb Foundation 中的垂直对齐内容

javascript - 单击 li 时关闭菜单

javascript - 如何从 Mysql、php 创建一个事件的动态条形图?

javascript - 使用 jQuery 从 HTML 中的多个图像元素中删除文件路径

javascript - 我怎样才能让我的谷歌地图动画化,让它无休止地向右平移?

javascript - 如何直接在 scala.js 中嵌入 javascript 代码?

Javascript关联动态数组