2013-02-05 40 views
3

我在窗體上使用ErrorMessage控件來驗證Edit Boxes之類的東西。很棒。當需要輸入數據時,會彈出一個灰色小警告框。驗證Combobox,單選按鈕,常規按鈕等?

任何人都可以點我一個例子,我可以做同樣的單選按鈕,組合框等?甚至是一個普通的按鈕(比如我在表單上有一個添加文檔按鈕)。

我真的不在乎郵件是如何顯示的。我只想讓我的驗證在所有組件的驗證中保持一致。換句話說,我不想要一些服務器端和一些客戶端驗證。

那裏有任何例子嗎?我一直在使用我自己的驗證使用ext lib對話框,它運行良好,但我希望更容易實現。

回答

5

我一直在使用this XSnippet on validation的擴展版本。這使您可以管理中央SSJS庫中的所有驗證,然後在顯示錯誤控件中顯示所有錯誤。

在中央SSJS庫中,您可以驗證您的控件,包括單選按鈕,組合框等,並組合您的驗證(例如,在另一個控件具有特定值時檢查一個控件的值)。

這裏的baesd驗證特定字段(FIELDA)是否已被填充在當單選按鈕組(radioField)的值爲1時的上提XSnippet一個例子:

var radioVal = getComponent("radioField").value; 
var control = getComponent("FieldA"); 
var val = control.getValue(); 
if (radioVal == "1" && isEmpty(val)){ 
    valid = false; 
    postValidationError(control, "Please fill in ..."); 
} 
+1

我認爲你的意思是這個? http://openntf.org/XSnippets.nsf/snippet.xsp?id=ssjs-form-validation-that-triggers-errormessage-controls我從來沒有能夠得到它的工作。那裏有任何工作實例嗎? –

+1

是的,這是我在我的答案中鏈接到的那個。我使用它在幾個應用程序,所以我有工作的例子。 –

+0

我得到它的工作,但我不喜歡它。它不會將焦點設置爲正在驗證的控件。或者我仍然在做錯什麼? –

3

希望通過的ErrorMessage控制你的意思是「顯示錯誤」控件。對於「數據」中所有屬性中的組合框,您可以找到「驗證器」。在這裏,您可以像編輯框一樣添加驗證。對於組合框,我通常使用validateExpression。然後我使用「顯示錯誤」控件來顯示錯誤。

<xp:comboBox id="comboBox1"> 
    <xp:this.validators> 
     <xp:validateExpression message="Please select value in combo box."> 
      <xp:this.expression><![CDATA[#{javascript:!getComponent("comboBox1").getSubmittedValue().equalsIgnoreCase("Select")}]]></xp:this.expression> 
     </xp:validateExpression> 
    </xp:this.validators> 
    <xp:selectItem itemLabel="Select" itemValue="Select"></xp:selectItem> 
    <xp:selectItem itemLabel="1" itemValue="1"></xp:selectItem> 
    <xp:selectItem itemLabel="2" itemValue="2"></xp:selectItem> 
    <xp:selectItem itemLabel="3" itemValue="3"></xp:selectItem> 
</xp:comboBox> 
<xp:message id="message1" for="comboBox1"></xp:message> 

在上面的例子中,如果用戶沒有選擇組合框中的任何項目,那麼錯誤消息顯示給用戶。請注意,這是服務器端驗證。我沒有嘗試過其他控件,但它應該以類似的方式工作。

讓我知道如果我正確理解你的問題。

更新2013年2月7日:查看下面的評論Mikael Grevsten爲更好的方法。

+3

您可以將「選擇」選項的itemValue保留爲空字符串,並將其驗證爲空,並顯示錯誤;

+0

@MikaelGrevsten:是的,工作。謝謝!當我通過屬性中的值選項卡在組合框中輸入值時,生成的XPage代碼爲不帶'itemValue'屬性的'。這生成的HTML代碼爲''因爲我使用了'validateExpression'。我應該更經常地查看XPage源代碼:) – Naveen

+0

好!我通常鍵入「*選擇一個選項*」作爲組合中的第一個條目,如果值爲「0」,然後刪除源中的零... –

0

通過使用@GetField和組名可以驗證一組單選按鈕。

在這個例子中,組名稱爲BankLoss:

// BankLoss 
var radio1 = @GetField("BankLoss") 
if (radio1 == null || radio1 == ""){ 
    valid = false; 
    errors.push("Please indicate if there was a potential bank loss."); 
} 

爲我工作...

0

即使是最簡單明瞭的:如果你有這樣一個選項「選擇一個選項」,並設置空值「」,你可以使用validateRequired,就是這樣。 例子:

如果組合框的值是:

["-Select an option-|","Text1|Value1","Text2|Value2"] 

可以作爲@Naveen說,到所有屬性>數據>驗證> +>的validate- Required>設置消息,即可大功告成。