1

JavaScriptの場合 - ボタンを起動したい場合はこれを行います -

<button type = 'button' id='myButton'>HiddenButton</button>
<script> 
  function callAutoClick(){ 
         document.getElementById('myButton').click(); 
  }
</script>

このボタンをクリックしたいときは、たとえば、テキストフィールドの onChange -

<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 オブジェクトにアクセスする方法を提案していただければ、私のニーズにも応えてくれます。

前もって感謝します :)

4

1 に答える 1

0

使用できますdojo/query

function progClick() {
  require(["dojo/query"], function(query) {
    query("div[data-viewid=myViewId] > button").forEach(function(node) {
      node.click();
    });
  });
}
<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>

于 2014-11-12T15:59:50.700 に答える