DevExpress/Extreme dxSelectBox

DevExpress/Extreme dxSelectBox

我有 2 个关于 devExpress dxSelectBox 的问题。

  1. 在我选择一个项目后,表单下拉列表输入框变成可编辑的。它不在页面加载中,我不知道为什么。

  2. 无法在主框中显示旗帜图标,但可以在下拉列表项中显示 这是它的样子:

这是一个代码: javascript:

var langs = [{
    'Name': 'English',
    "ImageSrc": '/static/img/flags/United-States-icon.png',
    'value': 'en'
}, {
    'Name': '中文',
    "ImageSrc": '/static/img/flags/China-icon.png',
    'value': 'zh'
}]

$(function(){
    $("#language").dxSelectBox({
            dataSource: langs,
            displayExpr: "Name",
            valueExpr: "value",
            value: langs[0].value,
            acceptCustomValue: false,
            fieldEditEnabled: false,
            height: 'auto',
            width: '100',
            fieldTemplate: function(data, container) {
                var result = $("<div class='custom-item'><div class='lang'>" +
                    "<img src='" + data["ImageSrc"] +
                    "' /></div></div>");
                result.find(".lang").dxTextBox({ value: data['Name'] });
                container.append(result);
            },
            itemTemplate: function(data) {
                return "<div class='custom-item'>" + "<div class='lang'>" +
                     data['Name'] + "<img src='" +
                     data['ImageSrc']+ "' /></div></div>";
            },
            valueChangeEvent: function(data) {
                window.location.replace('https://www.google.com')
            }
    });
});

css:

.dx-dropdownlist-popup-wrapper .dx-list:not(.dx-list-select-decorator-enabled) .dx-list-item-content {
    padding-left: 7px;
    padding-right: 7px;
}

.custom-item {
    position: relative;
    min-height: 30px;
}

.custom-item .language {
    display: inline-block;
    padding-left: 10px;
    text-indent: 0;
    line-height: 30px;
    font-size: 12px;
}

/*.custom-item > img {*/
    /*left: 1px;*/
    /*position: absolute;*/
    /*top: 50%;*/
    /*!*margin-top: -15px;*!*/
/*}*/

.custom-item .dx-texteditor-buttons-container {
    display: none;
}
.current-value {
    padding: 10px 0;
}

.current-value > span {
    font-weight: bold;
}

第一点:

您正在使用 fieldEditEnabled 选项,即 deprecated。使用 only 而不是 acceptCustomValue 选项。

第二点:

您正在尝试在 .lang 元素内渲染图像。 接下来,您在 .lang div 上创建一个 dxTextBox。因此,所有内部标记都替换为 dxTextBox 标记。嗯,你可以把你的图片放在 .lang div:

旁边
 var result = $("<div class='custom-item'><div class='lang'></div></div>");
 result.find(".lang").dxTextBox({ value: data['Name'] });
 result.append("<img class='selected-item-image' src='" + data["ImageSrc"] + "' />");
 container.append(result);

我也创建了 fiddle