我有一个Dojo1.5的表单设置。我使用的是dijit.form.ComboBox和dijit.form.TextBox
组合框有像“汽车”、“自行车”、“摩托车”这样的值,而文本框则是组合框的形容词。因此,组合框中的内容并不重要,但是如果Combobox确实有一个值,那么必须在TextBox中填充一些内容。可选的是,如果ComboBox中没有任何内容,那么TextBox中也不能有任何内容,这很好。事实上,如果组合框中没有某些内容,那么文本框中一定没有任何内容。
在常规编码中,我只会在文本框上使用onBlur事件来转到一个函数,该函数检查ComboBox是否有值。我在道场看到这是行不通的。代码示例如下...
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"
/>我最初的尝试是在描述符的标记中添加一个onBlur,但发现这不起作用。
Dojo是如何处理这个问题的?是通过dojo.connect参数实现的吗?尽管在上面的示例中,组合框的id为"vehicle_1“,文本框的id为"filter_value_1",但是可以有许多顺序向上编号的组合框和文本框。(vehicle_2、vehicle_3等)
任何建议或到资源的链接都将非常感谢。
发布于 2011-01-12 07:33:18
要添加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
发布于 2011-01-12 08:49:56
对于我来说,onBlur似乎工作得很好,即使在HTML声明的小部件中也是如此。下面是一个非常简单的例子:
http://jsfiddle.net/kfranqueiro/BWT4U/
(打开firebug/webkit检查器/IE8dev工具以查看console.log消息。)
但是,要获得更理想的解决方案,您可能还会对其他一些小部件感兴趣……
希望这篇文章能帮你入门。
https://stackoverflow.com/questions/4662646
复制相似问题