在JavaScript中 - 如果我想触发按钮,我会这样做 -
<button type = 'button' id='myButton'>HiddenButton</button>
<script>
function callAutoClick(){
document.getElementById('myButton').click();
}
</script>
当我要触发此按钮时,请单击,例如,onChange of text field -
<input type= 'text' onchange ='callAutoClick()'/>
我无法在DOJO中做同样的事情。我找到了一个使用Javascript的解决方案 -
var divId = document.getElementById('myDivID');
divId.getElementsByTagName("button")[0].click();
但我不想与DivID有依赖关系。只需知道按钮的controlID就可以点击一个按钮。我在网上找到的只是使用dojo为按钮定义OnClick()而不是单击按钮本身的方法。
另外,我正在使用BPM工具设计页面,以便包含DivID更改的部分。当我在FireBug中打开页面时,我可以看到 -
<div id="div_1_1_2_1" class="Button CoachView CoachView_invisible CoachView_show" data-ibmbpm-layoutpreview="vertical" data-eventid="boundaryEvent_2" data-viewid="Hidden_Cancel" data-config="config23" data-bindingtype="" data-binding="" data-type="com.ibm.bpm.coach.Snapshot_2d5b8abc_ade1_4b8c_a9aa_dfc746e757d8.Button">
<button class="BPMButton BPMButtonBorder" type="button">Hidden_Cancel</button>
</div>
如果你们可以建议我使用data-viewId访问DOM对象,那么它也可以满足我的需求。
提前致谢:)
答案 0 :(得分:0)
您可以使用dojo/query
:
function progClick() {
require(["dojo/query"], function(query) {
query("div[data-viewid=myViewId] > button").forEach(function(node) {
node.click();
});
});
}
&#13;
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/dojo/1.10.1/dojo/dojo.js" data-dojo-config="async: true"></script>
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/dojo/1.10.1/dijit/themes/claro/claro.css">
</head>
<body class="claro">
<div id="everChangingId" data-viewid="myViewId">
<button type="button" onclick="alert('my button got clicked!')">My Button</button>
</div>
<hr/>
<button type="button" onclick="progClick()">Programatically Click My button</button>
</body>
</html>
&#13;