2014-02-06 33 views
1

我有這個問題,我有兩個複選框,我想驗證,所以必須選擇其中之一。ASP.NET動態驗證使用JavaScript

我創建使用JavaScript的方法是:

function learningDisValidator(source, args) { 
     if (document.getElementById("<%= persLearningDisabilityYes.ClientID %>").checked || document.getElementById("<%= persLearningDisabilityNo.ClientID %>").checked) { 
      args.IsValid = true; 
     } 
     else { 
      args.IsValid = false; 
     } 

    } 

比我的自定義字段校驗器,它是

<asp:CustomValidator id="learningDisVal" runat="server" Display="Dynamic" Enabled="true" ErrorMessage="Learning Disability is Required" ClientValidationFunction="learningDisValidator"></asp:CustomValidator> 

現在這種驗證出於某種原因不能正常工作。我的問題是,我有那些如果某些選項使用

ValidatorEnable(document.getElementById('persLearningDisabilityDetailsVal'), true); 

選擇這些做的工作運行過程中啓用其他驗證。我在運行時啓用了這些驗證器的問題是,一旦啓用了錯誤消息,就會在錯誤提示按鈕被點擊後立即顯示。我對ASP.NET很陌生。任何幫助將不勝感激,謝謝。

編輯:我有其他驗證程序,根據用戶選擇啓用,例如,如果單選按鈕1被選中,它會顯示新的表單域,並啓用驗證器爲「城市」,如果單選按鈕2被選中顯示新的表單域併爲「女性」啓用驗證器。現在我的問題是,一旦啓用驗證程序,就像我上面顯示的那樣,它的錯誤信息會立即顯示在屏幕底部的錯誤面板中,該面板基本上是一個帶有asp.net自定義驗證程序的div。我希望在點擊提交按鈕後顯示此消息,從而讓用戶有時間弄清楚他的「自己的」並沒有告訴他有什麼需要之前給他機會去做。至於代碼我不知道還有什麼可以給,但我會嘗試:

<div class="col1of1val"><asp:RequiredFieldValidator runat="server" ID="accHostFamilyDetailsAllergiesVal" Display="Dynamic" ControlToValidate="accHostFamilyDetailsAllergies" ErrorMessage="field cannot be empty" Enabled="false"></asp:RequiredFieldValidator></div> 

,並在javascript:

ValidatorEnable(document.getElementById('accHostFamilyDetailsAllergiesVal'), true); 
+0

工作測試,我會很樂意幫助,雖然,你能提供你的代碼的更完整的例子嗎? – Yushell

+0

不要如果我的編輯確實有幫助,我只是希望它:) – mikkuslice

+0

糾正我,如果我錯了。 CustomValidator在頁面的帖子之前觸發。你希望它在之後開火。對? – Yushell

回答

0

只需使用jQuery和檢查,如果這兩個值都爲空的形式提交之前。所以像這樣的東西。

試驗「」,如果不爲0

$("#btnSubmit").click(function() { 

if ($("#checkbox1").val() == "" && $("#checkbox2").val() == "") 
{ 
    // causes form submit to stop and will not post to the server 
     alert("some error message"); 
    return false; 
} 

}); 
+0

以及我可以檢查使用 $(「#checkbox1」)。checked == false 但這不是我所要求的。 – mikkuslice