2015-10-06 24 views
1

我是新來AEM。如何顯示的字段尚未填寫

我正在一個CQ5腳手架形式。有幾個字段用allowBlank = false標記,以防止作者在處理之前更新表單。

的問題是,該字段通過一個很長的形式分散,我們要告訴用戶,他們需要去填補了該領域的名稱。

我無法弄清楚如何運行JavaScript當更新按鈕在腳手架上被點擊時。

回答

2

在你的對話框中,添加一個監聽器註冊一個回調,爲「beforesubmit」事件,如以下幾點:

<jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0" 
      jcr:primaryType="cq:Dialog" 
      title="Your Component" 
      xtype="dialog"> 
    <items jcr:primaryType="cq:TabPanel"> 
... 
    </items> 
    <listeners 
      jcr:primaryType="nt:unstructured" 
      beforesubmit="function(dialog){return YourNamespace.validate(this);}" /> 

</jcr:root> 

然後,在您包括組件使用的任何時候JavaScript文件(例如通過向組件添加客戶端庫),您可以編寫您需要的JavaScript。例如:

YourNamespace = {}; 

YourNamespace.validate = function (dialog) { 
    var buttonText = dialog.getField('./buttonText'), 
     buttonUrl = dialog.getField('./buttonUrl'), 
     isValid = true, 
     validMsg = 'Validation Failed: You must fill out this field.'; 

    if(buttonText.getValue().length > 0 && buttonUrl.getValue().length === 0){ 
     isValid = false; 
    } 

    if(!isValid){ 
     CQ.Ext.Msg.show({title: 'Validation Failed', msg: validMsg, buttons: CQ.Ext.MessageBox.OK, icon: CQ.Ext.MessageBox.ERROR}); 
     return false; 
    } 
}; 

參考有關您可以用對象做什麼細節小部件API你作爲參數傳遞,比如在上面的例子中,「對話」對象:https://docs.adobe.com/docs/en/cq/5-6-1/widgets-api/index.html

相關問題