这样子不行,我是希望只能通过点击选中,你这样的话输入文字后点击相同的节点也被阻断了,请改正你的代码
时间: 2024-02-11 20:08:32 浏览: 98
非常抱歉,我的代码实现有误,感谢您的指正。
如果您希望只能通过点击选中 combobox 的选项,而手动输入时不会自动选中,您可以尝试以下代码:
```
$('#combobox').combobox({
onSelect: function(record){
$('#combobox').combobox('setValue', record.value);
},
filter: function(q, row) {
var opts = $(this).combobox('options');
return row[opts.textField].toLowerCase().indexOf(q.toLowerCase()) >= 0;
},
formatter: function(row) {
return row.text;
},
onHidePanel: function() {
var opts = $(this).combobox('options');
var data = $(this).combobox('getData');
var inputValue = $(this).combobox('getText');
var exist = false;
for (var i = 0; i < data.length; i++) {
if (data[i][opts.textField] === inputValue) {
exist = true;
break;
}
}
if (!exist) {
$(this).combobox('clear');
}
}
});
```
这段代码的实现思路是,当用户手动输入时,过滤列表中的选项,只显示符合条件的选项。当用户在列表中选择一个选项时,将该选项的值赋值给 combobox,并显示选项的 text。当用户关闭下拉列表时,判断用户输入的值是否在列表中出现过,如果没有出现过,则清空 combobox 的值。
这样实现可以防止用户手动输入时自动选中,只有通过点击选中才能实现选中效果。
阅读全文