Dojo:dojo onblur事件

myss37ts  于 2022-12-16  发布在  Dojo
关注(0)|答案(2)|浏览(244)

我用dojo1.5设置了一个表单,我使用了dijit.form.ComboBox和dijit.form.TextBox
组合框有“汽车”、“自行车”、“摩托车”等值,而文本框是组合框的形容词。因此,组合框中有什么并不重要,但如果组合框确实有值,则必须在文本框中填充一些内容。可选地,如果组合框中没有任何内容,那么文本框中就没有东西了,这很好。事实上,如果组合框中没有东西,那么文本框中就一定没有东西。
在常规编码中,我只会在文本框上使用一个onBlur事件来转到一个函数,该函数检查组合框是否有值。我在Dojo中看到这不起作用...代码示例如下...

Vehicle:
    <input dojoType="dijit.form.ComboBox"
      store="xvarStore"
      value=""
      searchAttr="name"
      name="vehicle_1"
      id="vehicle_1"
    />
 Descriptor:
<input type="text"
                dojoType="dijit.form.TextBox"
                value=""
                class=lighttext
                style="width:350px;height:19px"
                id="filter_value_1"
                name="filter_value_1"
                />

我最初尝试在Descriptor的标记中添加onBlur,但发现这不起作用。
Dojo如何处理这个问题?是通过dojo.connect参数吗?尽管在上面的例子中组合框的id是“vehicle_1”,文本框的id是“filter_value_1”,但是可以有许多组合框和文本框按顺序向上编号。(vehicle_2,vehicle_3等)
任何建议或资源链接将不胜感激。

zsohkypk

zsohkypk1#

要添加onBlur事件,您应该使用dojo.connect():

dojo.connect(dojo.byId("vehicle_1"), "onBlur", function() { /* do something */ });

如果您有多个输入需要连接到它,可以考虑为那些需要模糊的输入添加一个定制类,并使用dojo.query连接到所有这些输入:

Vehicle:
    <input dojoType="dijit.form.ComboBox"
      store="xvarStore"
      class="blurEvent" 
      value=""
      searchAttr="name"
      name="vehicle_1"
      id="vehicle_1"
    />

dojo.query(".blurEvent").forEach(function(node, index, arr) {
      dojo.connect(node, "onBlur", function() { /* do something */ });
  });

在传递给dojo.connect的函数中,您可以添加一些代码来去掉末尾的数字,并使用它来引用每个filter_value_* 输入以进行验证。
dojo.connect()
Combobox documention

crcmnpdw

crcmnpdw2#

onBlur似乎对我来说工作得很好,即使在HTML声明的小部件中也是如此。
http://jsfiddle.net/kfranqueiro/BWT4U/
(Have firebug/webkit inspector/IE8开发工具打开以查看console.log消息。)
然而,对于更理想的解决方案,您可能还对其他一些小部件感兴趣...

希望这能让你开始。

相关问题