无法在文本框中捕获Enter

时间:2015-08-03 20:24:09

标签: dojo

我正在努力捕获文本框中的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文件中附加点......

2 个答案:

答案 0 :(得分:0)

你快到了。看一下这段代码:

JSFiddle

这部分代码应该足以让你得到你想要的工作:

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)

再次感谢您的建议。