2012-08-08 58 views
0

的能見度我有自定義的驗證碼的CustomValidator基於控制

<asp:CustomValidator ID="ddl1" ClientValidationFunction="IscontrolVisible" ControlToValidate="ddl1" 
          runat="server" ValidationGroup="ValSummary" Display="Dynamic" ErrorMessage="drop down invisible">*</asp:CustomValidator> 
下面

是基於控制的可視性功能

function IscontrolVisible(source, arguments) { 
     //if ((document.getElementById(source).visibility == "visible")) { 
     debugger; 
     if (arguments.value == "" || arguments.value == "Select...") { 
      arguments.IsValid = false; 
     } 
     else { 
      arguments.IsValid = true; 
     } 
    } 

我怎樣才能得到錯誤信息?

回答

0

使用source.controltovalidate屬性來獲取被驗證控件的ID,所以在代碼中使用document.getElementById(source.controltovalidate)

但是,您將只能夠檢測到您要驗證的控件是可見如果您直接設置在控件本身的知名度

在這種情況下,你可以做一些類似下面的一個...

if (document.getElementById(source.controltovalidate).style.visibility !== "false") { 
if (document.getElementById(source.controltovalidate).style.display !== "none") { 

如果控制是不可見的,因爲它的一個父控件,那麼它不繼承的CSS樣式visibilitydisplay。在這種情況下,您將不得不遞歸檢查所討論的控件的所有祖先。

附加

如果你想改變的ErrorMessage文本(注意,這隻會改變它在本地的瀏覽器,並回傳後,將不會被複制回服務器上),那麼下面應該工作爲驗證摘要消息框彈出,並列出/子彈...

source.errormessage = "New Error Message"; 

而以下時顯示爲驗證自身的一部分,該消息應該工作...

source.innerHTML = "New Error Message";