我正在努力捕获文本框中的Enter事件,并尝试了几个不同的例子到目前为止没有运气。文本框位于窗口小部件模板html中的表格内。我在dojo 1.9上。
以下是模板文件中的定义:
<td id="BBC"><input type="text" name="SrchWithin"
placeholder="Search within Last Name" id="SrchWithin"
dojoType="dijit.form.TextBox" value="" style="width: 12em;" />
/td>
以下是基于网络上的一些示例的一些尝试:
require(["dijit/form/TextBox"]);
require(["dojo/on","dojo/keys"],
function(on, keys) {
on(digit.byId("SrchWithin"), "keypress", function(evt) {
console.log("key = " + evt.charOrCode);
});
});
该尝试以未定义的数字结束。
其他大多数人都没有参加过活动:
var taskDblClkHndl = dojo.connect(dojo.byId("SrchWithin"), "onKeyUp", function(event) {
console.log("key pressed");
});
require([ "dojo/dom-construct", "dojo/on", "dojo/query", "dojo/keys",
"dojo/domReady!" ], function(domConstruct, on, query, keys) {
query("input[type='text']").on("keydown", function(event) {
console.log("event.keyCode" + event.keyCode);
});
});
<script
type="dojo/connect" event="onKeyDown" args="evt">
var key = evt.charOrCode;
if (key == dojo.keys.ENTER) {
console.log("dojo.keys.ENTER");
}
</script>
有很多方法可以做到这一点,我无法让一个人工作......对我所缺少的内容有何评论?
更新:也许这是我尝试此代码的位置的上下文问题... 我把以下代码放在我使用查询尝试建议的地方,它没有显示我期望的输入字段:
var testit = dojo.query("input, button, textarea, select", this.domNode).forEach(
function(inputElem) {
console.log(inputElem);
}
);
但是,当我将相同的代码添加到我的widget.js文件中的postCreate()方法时,我确实找到了SrchWithin文本框...不确定如何将此代码添加到窗口小部件或者如果我可以使用从我的main.jsp文件中附加点......
答案 0 :(得分:0)
你快到了。看一下这段代码:
这部分代码应该足以让你得到你想要的工作:
require([ "dojo/dom-construct", "dojo/on", "dojo/query", "dojo/keys", "dojo/domReady!" ], function(domConstruct, on, query, keys) {
query("input[type='text']").on("keydown", function(event) {
console.log("event.keyCode" + event.keyCode);
});
});
答案 1 :(得分:0)
这种方法对我有用......我添加了一个data-dojo-attach-event
<td id="BBC"><input type="text" name="SrchWithin"
placeholder="Search within Last Name" id="SrchWithin"
dojoType="dijit.form.TextBox" value="" style="width: 12em;"
data-dojo-attach-point="SrchWithinAttach"
data-dojo-attach-event="onKeyUp:keyPressed" />
</td>
然后将方法keyPressed()添加到我的自定义小部件(此示例使用键,因此必须使用dojo / keys以及要求和函数列表...)
keyPressed : function(event){
if (event.keyCode === keys.ENTER) {
console.log("Enter pressed...");
}
},
我仍在努力获取文本框的价值...... 尝试过registry.byId(“SrchWithin”),但未分配var 还有dijit.byId但它返回了dijit.byId不是函数。
所以,我尝试添加parser.parse(),但是说没有说包含文本框的BorderContainer“已经注册”
更新:这对我有用:
var box0 = dojo.byId("SrchWithin");
console.log(box0.value)
再次感谢您的建议。