JavaScriptを使用してASP.NETバリデーターを無効にする方法を知っている人はいますか?私はjavascript style.display = 'none'を使用して、Webページの一部を無効にしています。ただし、これらの無効化された部分にはまだ起動しているasp.netバリデーターがあり、サーバーへの往復を行わずに無効化する必要があります。ありがとう。
このスニペットを使用します。
function doSomething()
{
var myVal = document.getElementById('myValidatorClientID');
ValidatorEnable(myVal, false);
}
上記のGlenn Gのコメントに従って、私は
myVal.enabled = false;
代わりにバリデーターを無効にする
ValidatorEnable(myVal, false);
これが私が体験したことです。両方のスニペットは、.net Framework 2.0を搭載した2003サーバーで正常に動作しました。ただし、.netフレームワーク4.0がインストールされたサーバー2008 R2(問題の原因は不明)では、「ValidatorEnable」で予期しない動作が発生していました。ページにタブ(ユーザーコントロール)があり、 "ValidatorEnable"を呼び出していたタブを離れると、次のポストバックまで、次のタブでバリデーターが一時的に無効化されていました(コードを呼び出して無効化していない場合でも)。
これは古い質問ですが、次の回答が示されていないことに驚いています。上記のコメントを使用して実装し、問題なく動作しました
# enable validation
document.getElementById('<%=mytextbox.ClientID%>').enabled = true
#disable validation
document.getElementById('<%=mytextbox.ClientID%>').enabled = false
Javascriptにエラーがある場合、コードは終了しますがエラーは発生しないため、この実装はトリッキーになる可能性があります。役立つポイント
ブレークポイントを設定できることを確認してくださいandは、コードをシングルステップ実行できます。そうでない場合は、ブラウザを再起動します。
このコードを配置する関数の先頭にブレークポイントを設定します。コードをステップ実行します。エラーがある場合、コードは終了し、コードにステップインすることはできません。
Firefox Firebugでは、コンソールタブにjavascriptステートメント全体を入力して、ステートメントが返す結果を確認できます。最も重要なことは、コントロールのnullでない値をチェックすることです。
さらに、単に要素を非表示にするのではなく、Visibleプロパティをfalseに設定することもできます...
whateverItem.Visible = false;
これにより、そのアイテムはページに表示されなくなり、検証が無効になると思います。私が間違っている場合、誰かが私を訂正してください。
以下は、JavaScriptからASP.NETバリデーターを制御する方法に関する詳細な記事です。
このようにするための最良の方法は、
function doSomething()
{
var objvalidator = document.getElementById('myValidatorClientID');
objvalidator.enabled = false;
objvalidator.isvalid = true;
ValidatorUpdateDisplay(objvalidator);
}