2011-02-08 11 views
0

さまざまな種類のページに多数のASP.NETバリデータがありますが、そのうちのいくつかは、JavaScriptの使用によるページのユーザー選択に応じて無効にしています。CustomValidatorの問題

​​

これが機能するとバリデータは、私は他のバリデータの種類

<asp:CheckBoxList id="BodyPartsList" runat="server" RepeatColumns = "2" 
        Width="1023px"> 
        <asp:ListItem Text = "0. Head/headaches" Value = "1"></asp:ListItem> 
        <asp:ListItem Text = "1. Leg(s)" Value = "2"></asp:ListItem> 
        <asp:ListItem Text = "2. Arm(s)" Value = "3"></asp:ListItem> 
        <asp:ListItem Text = "3. Neck" Value = "4"></asp:ListItem> 
        <asp:ListItem Text = "4. Shoulder(s)" Value = "5"></asp:ListItem> 
        <asp:ListItem Text = "5. Low Back" Value = "6"></asp:ListItem> 
        <asp:ListItem Text = "6. Upper Back" Value = "7"></asp:ListItem> 
        <asp:ListItem Text = "7. Feet" Value = "8"></asp:ListItem> 
        <asp:ListItem Text = "8. Hand(s)" Value = "9"></asp:ListItem> 
        <asp:ListItem Text = "9. Other(Describe in &quot;Details of Plan&quot;)" Value = "10"></asp:ListItem> 
       </asp:CheckBoxList> 

       <asp:CustomValidator ID="PainLocationValidator" runat="server" Display="Dynamic" 
       ErrorMessage="Location of pain is required." 
       ClientValidationFunction="checkPainListValidate" 
       ValidationGroup = "OnSave" EnableClientScript= "true" SetFocusOnError= "true" Width = "100%" CssClass = "pain" /> 



function checkPainListValidate(sender, args) { 

    args.IsValid = true; 

    if ($('#<%= BodyPartsList.ClientID %> input:checked').length > 0) 
     args.IsValid = true; 

    else 
     args.IsValid = false; 

} 

ですが、なぜでしょうを使用することはできませんいつでも私が使用している任意のCustomValidatorsを除くすべてのケースを中に発射していないようですか?私もそれらを無効にするために何かできますか?

ありがとうございました。

答えて

0

いくつかのASPXマークアップは、参考になるが、とにかくここにいくつかのアイデアがあります:

  • はあなたのバリデータがnullであるか、validatorEnable代わりValidatorEnableのようなタイプを持っている場合、何が起こっているかを見るためにJavaScriptをデバッグしてい?何かJavaScriptエラーが出ますか?
  • のCustomValidatorは、サーバ - 上またはクライアント側で検証しない、私はValidatorEnableのみ
  • クライアント側でそれを無効にすると思いますが、ControlToValidateを指定するいけない場合は、のCustomValidatorは関係なく、すべてのポストバックで検証します
  • trueにEnableClientScriptを設定それを引き起こしたイベント
  • ClientValidationFunctionはクライアント側から呼び出されましたか?ところで、どのブラウザとどのフレームワークを使用しているのですか?それはASP.Net-Ajaxですか?
  • document.getElementById('<%=MyValidator.ClientID %>').disabled=true;で無効にしようとしましたか?

私は間違ったIDを使用してクライアント側でバリデーターを取得しているとします。

私はあなたのコードをテストしていると、この現象を再現することはできません。

これは、すべてのバリデータ(アカウントに痛みクラスを取るために編集した)無効にするには、私のJavascript機能である:用

function disablePainValidators() { 
    if ((typeof (Page_Validators) != "undefined") && (Page_Validators != null)) { 
     var i; 
     for (i = 0; i < Page_Validators.length; i++) { 
      if(Page_Validators[i].className=='pain') 
       ValidatorEnable(Page_Validators[i], false); 
     } 
    } 
} 
+0

感謝を私はクライアント側でそれを検証していますので、 'ClientValidationFunctionを使って、更新を見てください。それを行う。 4.バリデータを無効にすると、すべてのポストバックで検証されますか? – Victor

+0

@Victor:ポイント1は、私が部分的に削除しただけのタイプミスです(空のテキストは、ValidateEmptyTextをtrueに設定しないと決して検証されませんが、ここでは役に立ちません)。バリデータを無効にしたいと思ったので、ポストバックで検証するのはなぜですか?バリデータとClientValidationFunctionを無効にするjsコードも表示します。 jsをデバッグして何が起こるかを確認します。 –

+0

@Timはい、バリデータを無効にしようとしています。なぜそれがまだアクティブでポストバックが起こっていないのか不思議です。このクラスにはいくつかのバリデータがあり、CustomValidatorだけがアクティブのままです。 – Victor

関連する問題