I have 2 problem's with devExpress dxSelectBox.
After I pick an item form drop-down list input box becomes editable. It is not on page load and I don't know why.
Can't display a flag icon in main box, but can do it in dropdown list items This is what it looks like this:
Here is a code: 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;
}

The first point:
You are using the
fieldEditEnabledoption that is deprecated. Use only theacceptCustomValueoption instead.The second point:
You're trying to render an image inside the
.langelement. Next, you create adxTextBoxon the.langdiv. So, all inner markup is replaced with dxTextBox markup. Well, you can just put your image next to the.langdiv:I've created fiddle as well.