【发布时间】:2012-06-04 16:12:17
【问题描述】:
也许我走错了路……
设置:
我有一个相当复杂的完整的 dojofied Web 应用程序。这个问题的重要部分是在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?
【问题讨论】:
-
问题是浏览器可能有N个事件在运行。上面的 onBlur 只会阻止对其中之一的操作,即当前的 onBlur 事件。
标签: javascript dojo dom-events