javascript - dojo.data.ItemFileReadStore : Invalid item argument with Dijit combobox

标签 javascript dojo

我有一个带有 dijit.form.ComboBox 的 jsp 页面,该页面由连接到后端 Java 服务器的 dojo.data.ItemFileReadStore 填充。它几乎按预期工作,组合框正确显示结果。问题是我收到“dojo.data.ItemFileReadStore:无效的项目参数”。使用键盘箭头键在结果列表中滚动时。然而,用鼠标选择效果很好。

道场版本是1.2.3

这就是我将它放在我的 jsp 上的方式:

<input type="text" id="value"
dojoType="dijit.form.ComboBox"
autoComplete="false"
searchAttr="name"
forceValidOption="true"
hasDownArrow="false"
onKeyUp="populateValue"
/>

<script type="text/javascript">
function populateValue() {
    valueWidget = dijit.byId("value");
    var selectedValue = valueWidget.getValue();
    var url = "${contextPath}/someUrl?selectedValue=" + selectedValue + "%";
    store = new dojo.data.ItemFileReadStore({url:url});
    valueWidget.store = store;
    return;
    }
</script>

这是我从服务器收到的 JSON:

{"items":[
    {"name":"My string 1","label":"My string 1"},
    {"name":"My string 2","label":"My string 2"},
    {"name":"Mev.","label":"Mev."}],
"identifier":"name"}

知道这里出了什么问题吗?

最佳答案

解决了。问题似乎是组合框上的 onKeyUp 事件。当我将其更改为 onKeyPress 时,向下箭头列表不会再出现错误。

与 onKeyUp 相比,onKeyPress 实际上让我延迟了一个字符,因为事件是在字符尚未实际键入时触发的。知道我该如何克服这个问题吗?

关于javascript - dojo.data.ItemFileReadStore : Invalid item argument with Dijit combobox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2177704/

相关文章:

javascript - 在用户浏览器上的 Javascript 函数中使用 C++ 库

javascript - React.js : Re-render component data on add

css - 如何为与 dojo 的 dijit.ComboBox 关联的菜单提供与 dijit.Menu 不同的 css

drag-and-drop - Dojo 1.6 拖放 'Dnd' 错误(Source.xd.js(第 8 行))

dojo - 自定义 Dojo 构建的问题实习字符串

javascript - 我如何在 php codeigniter 上运行 ajax

javascript - HTMLElement focus() 方法未捕获类型错误

javascript - 更改选择元素中选项的颜色

javascript - 如何让 Dojo 更轻量一点?

javascript - 如何获取不规则值(例如 31、28、31...等)的 dojox.charting 标签?