也许我走错了路...
设置:
我有一个相当复杂的完整的 dojofied Web 应用程序。这个问题的重要部分是在 a 的中心区域有一个较长的表格,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
另一个元素?