我需要验证用户在CQ5对话框中提供的输入(页面组件 - 在侧踢中单击页面属性时打开)。某些字段没有vtype属性。我打算在对话框下的侦听器节点中使用对话框的beforesubmit事件。由于某种原因,提前事件的功能不会被调用。它的行为就像事件根本没有添加一样。我尝试将afterrender事件添加到同一个侦听器节点并且它可以工作。以下是我的dialog.xml
的摘录<?xml version="1.0" encoding="UTF-8"?>
<jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.orgjcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0"
jcr:primaryType="cq:Dialog"
title=""
xtype="tabpanel">
<items jcr:primaryType="cq:WidgetCollection">
</items>
<listeners
jcr:primaryType="nt:unstructured"
afterrender="function(dialog){alert(dialog);}"
beforesubmit="function(dialog){alert(dialog);}"/>
</jcr:root>
请帮我弄清楚如何按下对话框上的OK按钮调用一个函数,如果验证失败则取消提交。提前谢谢。
我指的是以下链接上的代码:
答案 0 :(得分:5)
这是因为对话框的xtype是&#34; tabpanel &#34;和tabpanel doesn't have beforesubmit事件。
将xtype更改为&#34; 对话框&#34;如果验证失败,则在beforesubmit处理程序中返回false。这样可以防止提交对话框。
<?xml version="1.0" encoding="UTF-8"?>
<jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0"
xmlns:jcr="http://www.jcp.orgjcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0"
jcr:primaryType="cq:Dialog"
title="" xtype="dialog">
<items jcr:primaryType="cq:WidgetCollection"></items>
<listeners jcr:primaryType="nt:unstructured"
beforesubmit="function(dialog){
if(<<!valid>>){
return false;
}
}" />
</jcr:root>