2011-03-16 63 views
2

我有一個由幾個requiredfieldvalidators組成的窗體,並有2個按鈕添加和更新按鈕。我想只將13個requiredfieldvalidator中的5個與更新按鈕相關聯,並且所有的添加按鈕都是可能的,因爲我被這個問題困住了。禁用必需的字段驗證程序

+0

只是出於好奇的發現,爲什麼一個更新的領域突然不再需要? – Pleun 2011-03-16 16:15:11

+0

,因爲用戶不能更新一些字段,但管理員將 – 2011-03-16 16:27:06

+0

那麼用戶如何插入它們?你最好讓這些字段不可編輯,並且讓requirefield驗證器 – Pleun 2011-03-16 19:29:08

回答

1

是否有一些字段與兩個按鈕相關?

如果有相關的添加按鈕和字段(但不相同)相關的更新按鈕字段,可以設置對相關

如果有域,驗證和按鈕一樣ValidationGroup屬性有關添加和更新按鈕這兩個領域:

  • 或者查看您的人機工程學......這聽起來有點怪怪的
  • 或使用自定義的驗證,將檢查的條件,你自己
+0

有一些必須對這兩個按鈕都有效,但只有一個按鈕將被同時點擊。事實是,我不知道如何使用自定義驗證器 – 2011-03-16 16:22:23

+0

然後開始[這裏](http://msdn.microsoft.com/library/system.web.ui.mobilecontrols.customvalidator.aspx)。主要想法是在驗證器上處理至少一個服務器事件,您可以在代碼中告訴它是否正常。你也可以實現一個自定義的JS來處理客戶端的值檢查,但它有點複雜(但你不必等待點擊驗證)。但是,有一個字段可以在某些情況下進行驗證,但在其他情況下不會有點奇怪。你能解釋一下你正在嘗試做什麼(事實上,爲什麼添加和更新的表單是相同的)? – 2011-03-16 16:40:06

0

將你的控件分成2個div,然後使用javascript來控制驗證器。點擊「添加」啓用添加驗證器,點擊「更新」,然後啓用驗證器進行更新。

我寫了一些js代碼似乎可以滿足您的請求。 迭代驗證器並啓用您需要的這些。 然後清除屏幕,擦除錯誤信息。

$(function() { 
     hidedivTemplate(); 
}); 

function hidedivTemplate() { 
     $('#divTemplate').hide(); 
     $('#divAuto').show(); 
     goThroughValidators(enableAutoDIV_Validation); 
} 

function hidedivAuto() { 
     $('#divAuto').hide(); 
     $('#divTemplate').show(); 
     goThroughValidators(enableTemplateDIV_Validation); 
} 

function goThroughValidators(func) { 
     for (i = 0; i < Page_Validators.length; i++) { 
      var validator = Page_Validators[i]; 
      func(validator); 
     } 
     //After the iteration, clean the error info on the screen 
     $("span[class='errorleft']").hide(); 
} 

function enableAutoDIV_Validation(validatorObj) { 
     switch (validatorObj.controltovalidate) { 
      case "<%=AAA.ClientID%>": 
      case "<%=BBB.ClientID%>": 
        ValidatorEnable(validatorObj, true); 
        break; 
      default: 
        ValidatorEnable(validatorObj, false); 
        break; 
     } 
} 

function enableTemplateDIV_Validation(validatorObj) { 
     switch (validatorObj.controltovalidate) { 
      case "<%=CCC.ClientID%>": 
      case "<%=DDD.ClientID%>": 
        ValidatorEnable(validatorObj, true); 
        break; 
      default: 
        ValidatorEnable(validatorObj, false); 
        break; 
     } 
}  

完整的代碼片段可以在這裏http://codelife.cybtamin.com/2012/08/enable-and-disable-asp-net-validator-by-javascript/