我有以下代码:
<div dojoType="dijit.layout.ContentPane" id="filterForm" style="padding: 3px">
<form dojoType="dijit.form.Form">
<input dojoType="dijit.form.TextBox" style="width: 120px" />
<button dojoType="dijit.form.Button" type="submit">
Filter
</button>
<script type="dojo/connect" event="onSubmit" args="evt">
filterGrid();
dojo.stopEvent(evt);
</script>
</form>
</div>
如果单击“过滤器”按钮,它会按预期工作,但是当用户按Enter键时,我希望使用相同的行为,同时关注文本框。但这不会发生。事实上,按Enter键时没有任何反应。如何在按Enter键时执行onSubmit处理程序?感谢。
答案 0 :(得分:4)
Dario这应该有效。你环境中的其他东西搞砸了。您可能有另一个脚本拦截击键。这可以在您网页上的脚本中,甚至可以在您的浏览器环境中,例如油脂猴子脚本或其他扩展名。
您应该设置一个最小的测试用例,其中网页仅包含一些包含该表单的极小html,并从aol或google CDN加载dojo并尝试输入。如果它不起作用,请给我们一份完整的测试副本(或URL),我们会试着看看出了什么问题,但我怀疑它会起作用。然后,您需要在最小测试用例和完整站点环境之间向后工作,直到找到相互冲突的脚本。
答案 1 :(得分:0)
这是我为我编写和工作的解决方案。 在&#34; dijit / form / ValidationTextBox&#34;上提交回车键。使用摩卡测试
keyEventDispatch:function(element,code,completionFn){
var keyboardEvent = document.createEvent("KeyboardEvent");
Object.defineProperty(keyboardEvent, 'keyCode', {
get : function() {
return this.keyCodeVal;
}
});
Object.defineProperty(keyboardEvent, 'which', {
get : function() {
return this.keyCodeVal;
}
});
var initMethod = typeof keyboardEvent.initKeyboardEvent !== 'undefined' ? "initKeyboardEvent" : "initKeyEvent";
keyboardEvent[initMethod](
"keypress", // event type : keydown, keyup, keypress
true, // bubbles
true, // cancelable
window, // viewArg: should be window
false, // ctrlKeyArg
false, // altKeyArg
false, // shiftKeyArg
false, // metaKeyArg
code, // keyCodeArg : unsigned long the virtual key code, else 0
0 // charCodeArgs : unsigned long the Unicode character associated with the depressed key, else 0
);
keyboardEvent.keyCodeVal = code;
if (element.dispatchEvent) element.dispatchEvent(keyboardEvent);
if (completionFn) completionFn();
},
在你的考试中你会打电话 keyEventDispatch(textboxes,13);
希望有所帮助
答案 2 :(得分:0)
我遇到了同样的问题,即在使用Dojo 1.5.0的旧代码库中,这不适用于Internet Explorer(适用于Firefox,Chrome适用)。
在隐藏表单的IE问题中,在Dojo中被证明是a bug,并由this patch修复。