多分私は間違った軌道に乗っています...
セットアップ:
私はかなり複雑な完全なdojofiedWebアプリケーションを持っています。この質問の重要な部分はdijit.layout.BorderContainer
、ナビゲーションツリーと他の領域のいくつかのアクションボタンを備えたの中央領域の長いフォームです。
私がしたいこと: ユーザーがデータを入力し、保存しなかった場合、フォームを離れるときに警告メッセージが表示されるはずです(ユーザーが離れる場合は、[新しい要素]ボタンをクリックします...)。より良いユーザーエクスペリエンスのために、「保存」、「とにかく残す」、「キャンセル」のオプションを備えたモーダルダイアログを提供したいと思いました。フォームのonBlurイベントを使用し、他のすべてのイベント(おそらく、他のウィジェットのonClick)を停止し、変更があるかどうかを確認し、変更がある場合はダイアログを表示します。それ以外の場合は、他のイベントを続行します。すべての非フォームアクティブ要素にcheckChangesメソッドを追加したくありません!
最初のテストでは、イベントを停止しようとしました...
これは動作します
<div id="formArea" dojoType="dijit.form.Form" encoding="multipart/form-data" action="" class="ContentPane" region="center">
<script type="dojo/connect" event="onBlur" >
alert("I don't think so");
</script>
</div>
...しかしそれは醜くて私は簡単に続けることができません
これはしません
<div id="formArea" dojoType="dijit.form.Form" encoding="multipart/form-data" action="" class="ContentPane" region="center">
<script type="dojo/connect" event="onBlur" args="e">
console.log("blur"); // ok
e.preventDefault();//event.stopt(e)//return false //<--neither of these
</script>
</div>
問題は、フォームの外側のボタンをクリックするとonBlur
トリガーされますが、ボタンのを停止できないことonClick
です。onBlur
私はそれがイベントオブジェクトを配信しないことを知っています-それで実際には機能しません...他の要素e.something
をキャッチする方法はありますか?onClick