2014-09-26 50 views
1

我有一个下拉列表,它可能会或可能不会更改隐藏字段的值。该更改由计算功能决定。 我想跟踪隐藏字段中的更改。如果有任何改变,我想检查一个复选框。隐藏字段上的Dojo Onchange事件

这是如何实现的? 我无法更改我的HTML。因此,一切都在JS中处理。

<input type="hidden" name="03Text" value=""> 

在Java脚本:

var w = dojo.query('[type$=hidden]'); 
w.forEach(function(node, index, nodelist){ 
     dojo.connect(node , "onchange", function(evt){     
     controlapiObj.setControlAttribute(payload.srcFormId, payload.outputParams[0], true, "checked"); 
     });   
}); 

我使用dojo.query因为在形式很多这样的隐藏字段,我必须监控所有的值变化。

回答

0

*强调文本*我相信问题是当您以编程方式更改隐藏字段的值时,“onchange”事件不会触发。您可以手动触发此事件,同时字段的值会像这样更改。我的例子使用道场1.10和功能上

HTML:

<input type="hidden" name="03Text" value="1"> 
<input type="hidden" name="03Text" value="2"> 
<input type="hidden" name="03Text" value="3"> 

SCRIPT:

require(["dojo/query", "dojo/on", "dojo/domReady!"], function(query, on){ 

var w = query('[type$=hidden]'); 
w.forEach(function(node, index, nodelist){ 
    on(node, "onchange", function(){ 
     console.log(node); 
    })   
}); 

var event = new Event('onchange'); 
w[0].dispatchEvent(event); 
w[1].dispatchEvent(event); 
w[2].dispatchEvent(event); 

}) 

的jsfiddle与例如:

http://jsfiddle.net/kagant15/ay1dzqqg/