我有一個由幾個requiredfieldvalidators組成的窗體,並有2個按鈕添加和更新按鈕。我想只將13個requiredfieldvalidator中的5個與更新按鈕相關聯,並且所有的添加按鈕都是可能的,因爲我被這個問題困住了。禁用必需的字段驗證程序
回答
是否有一些字段與兩個按鈕相關?
如果有相關的添加按鈕和字段(但不相同)相關的更新按鈕字段,可以設置對相關
如果有域,驗證和按鈕一樣ValidationGroup屬性有關添加和更新按鈕這兩個領域:
- 或者查看您的人機工程學......這聽起來有點怪怪的
- 或使用自定義的驗證,將檢查的條件,你自己
有一些必須對這兩個按鈕都有效,但只有一個按鈕將被同時點擊。事實是,我不知道如何使用自定義驗證器 – 2011-03-16 16:22:23
然後開始[這裏](http://msdn.microsoft.com/library/system.web.ui.mobilecontrols.customvalidator.aspx)。主要想法是在驗證器上處理至少一個服務器事件,您可以在代碼中告訴它是否正常。你也可以實現一個自定義的JS來處理客戶端的值檢查,但它有點複雜(但你不必等待點擊驗證)。但是,有一個字段可以在某些情況下進行驗證,但在其他情況下不會有點奇怪。你能解釋一下你正在嘗試做什麼(事實上,爲什麼添加和更新的表單是相同的)? – 2011-03-16 16:40:06
將你的控件分成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/
只是出於好奇的發現,爲什麼一個更新的領域突然不再需要? – Pleun 2011-03-16 16:15:11
,因爲用戶不能更新一些字段,但管理員將 – 2011-03-16 16:27:06
那麼用戶如何插入它們?你最好讓這些字段不可編輯,並且讓requirefield驗證器 – Pleun 2011-03-16 19:29:08