我使用ecm.widget.dialog.ConfirmationDialog
并为其添加了dijit/SimpleTextArea
。点击“是”按钮,我会检查用户是否在textarea
中输入了值,如果没有,我想向用户显示一条消息并留在confirmationDialog
。它显示消息但事件被触发并且流程继续。我甚至试图通过
dojo.stopEvent(evt);
但它不起作用。有人可以帮助我如何停止该事件,以便在用户输入值之前保留对话框?
以下是代码段
this.msgDialogBox = new ConfirmationDialog();
var textarea = new SimpleTextarea({
rows: "4",
cols: "50",
placeHolder:"Please provide reject reason",
maxLength:"256",
style:"width: 95%; height: 90px;",
required:true
},domConstruct.create("div",{align:'center'},this.msgDialogBox.contentArea));
textarea.startup();
on(this.msgDialogBox,"Execute",function(evt){
if(!textarea.get("value")){
domConstruct.place(domConstruct.create("div",{align:'center',innerHTML:'Reject reason cannot be blank',style:'color:#ff0000'}),this.inlineMessage,"after");
dojo.stopEvent(evt);
}else{
//value is there so perform task
}
});
答案 0 :(得分:0)
这不是导致对话框隐藏的事件,而是onExectue本身。
ConfirmationDialog的“dijit / Dialog”超类实际上总是在postCreate期间向onExecute添加.hide()(通过aspect.after) - 在.onExectue链接到'ok'按钮之前。这使得影响函数变得非常困难,因为.hide总是在onExecute之后执行。
我可以想到两个选择:
显然,第一个解决方案不能被推荐,但它会起作用。第二个是更优雅的解决方案,并允许您编写更漂亮的代码,因为您可以将SimpleTextArea集成到自定义小部件中。