web-dev-qa-db-ja.com

JavaScriptでASP.NETバリデーターを無効にする

JavaScriptを使用してASP.NETバリデーターを無効にする方法を知っている人はいますか?私はjavascript style.display = 'none'を使用して、Webページの一部を無効にしています。ただし、これらの無効化された部分にはまだ起動しているasp.netバリデーターがあり、サーバーへの往復を行わずに無効化する必要があります。ありがとう。

31
Peanut

このスニペットを使用します。

function doSomething()
{
  var myVal = document.getElementById('myValidatorClientID');
  ValidatorEnable(myVal, false); 
}
52
Andreas Grech

上記のGlenn Gのコメントに従って、私は

myVal.enabled = false; 

代わりにバリデーターを無効にする

ValidatorEnable(myVal, false); 

これが私が体験したことです。両方のスニペットは、.net Framework 2.0を搭載した2003サーバーで正常に動作しました。ただし、.netフレームワーク4.0がインストールされたサーバー2008 R2(問題の原因は不明)では、「ValidatorEnable」で予期しない動作が発生していました。ページにタブ(ユーザーコントロール)があり、 "ValidatorEnable"を呼び出していたタブを離れると、次のポストバックまで、次のタブでバリデーターが一時的に無効化されていました(コードを呼び出して無効化していない場合でも)。

1
Tony L.

これは古い質問ですが、次の回答が示されていないことに驚いています。上記のコメントを使用して実装し、問題なく動作しました

# enable validation
document.getElementById('<%=mytextbox.ClientID%>').enabled = true

#disable validation
document.getElementById('<%=mytextbox.ClientID%>').enabled = false

Javascriptにエラーがある場合、コードは終了しますがエラーは発生しないため、この実装はトリッキーになる可能性があります。役立つポイント

  1. ブレークポイントを設定できることを確認してくださいandは、コードをシングルステップ実行できます。そうでない場合は、ブラウザを再起動します。

  2. このコードを配置する関数の先頭にブレークポイントを設定します。コードをステップ実行します。エラーがある場合、コードは終了し、コードにステップインすることはできません。

  3. Firefox Firebugでは、コンソールタブにjavascriptステートメント全体を入力して、ステートメントが返す結果を確認できます。最も重要なことは、コントロールのnullでない値をチェックすることです。

1
Hammad Khan

さらに、単に要素を非表示にするのではなく、Visibleプロパティをfalseに設定することもできます...

whateverItem.Visible = false;

これにより、そのアイテムはページに表示されなくなり、検証が無効になると思います。私が間違っている場合、誰かが私を訂正してください。

1
Mike Fielden

以下は、JavaScriptからASP.NETバリデーターを制御する方法に関する詳細な記事です。

ASP.NET ValidatorがJavaScriptからクライアント側の検証を制御する方法

0
Roboblob

このようにするための最良の方法は、

function doSomething()
{
    var objvalidator = document.getElementById('myValidatorClientID');
    objvalidator.enabled = false;
    objvalidator.isvalid = true;
    ValidatorUpdateDisplay(objvalidator);
}
0
Karthikeyan P