ASP.NETカスタムクライアント側の検証 -- asp.net フィールド と javascript フィールド と validation フィールド 関連 問題

ASP.Net Custom Client-Side Validation












35
vote

問題

日本語

.NET 2.0 Webサイトでのユーザーコントロールのカスタム検証機能があり、支払われた手数料はかかりません。

ascx ファイルにバリデータコードを置き、 Page.ClientScript.RegisterClientScriptBlock() を使用しても検証が発生しましたが、JavaScript関数が見つかりませんでした。 。

Firefoxのエラーコンソールの出力は "feeAmountCheck is not defined" です。これは関数です(これはFirefox-> View Sourceから直接取得されました)

<事前> <コード> <script type="text/javascript"> function feeAmountCheck(source, arguments) { var amountDue = document.getElementById('ctl00_footerContentHolder_Fees1_FeeDue'); var amountPaid = document.getElementById('ctl00_footerContentHolder_Fees1_FeePaid'); if (amountDue.value > 0 && amountDue >= amountPaid) { arguments.IsValid = true; } else { arguments.IsValid = false; } return arguments; } </script>

その関数が見つからない理由についてのアイデア?マスターページまたは消費されたページに機能を追加することなくこれを解決する方法をどう思いますか?

英語

I have a custom validation function in JavaScript in a user control on a .Net 2.0 web site which checks to see that the fee paid is not in excess of the fee amount due.

I've placed the validator code in the ascx file, and I have also tried using Page.ClientScript.RegisterClientScriptBlock() and in both cases the validation fires, but cannot find the JavaScript function.

The output in Firefox's error console is "feeAmountCheck is not defined". Here is the function (this was taken directly from firefox->view source)

<script type="text/javascript">     function feeAmountCheck(source, arguments)     {         var amountDue = document.getElementById('ctl00_footerContentHolder_Fees1_FeeDue');         var amountPaid = document.getElementById('ctl00_footerContentHolder_Fees1_FeePaid');          if (amountDue.value > 0 && amountDue >= amountPaid)         {             arguments.IsValid = true;         }         else         {             arguments.IsValid = false;         }          return arguments;     } </script> 

Any ideas as to why the function isn't being found? How can I remedy this without having to add the function to my master page or consuming page?

</div
        

回答リスト

19
 
vote
vote
ベストアンサー
 

引数名を sender および args に変更してみてください。そして、それを機能させた後は、Ajaxの使用に関係なく、 ScriptManager.RegisterClientScriptBlock に通話を切り替えます。

 

Try changing the argument names to sender and args. And, after you have it working, switch the call over to ScriptManager.RegisterClientScriptBlock, regardless of AJAX use.

</div
 
 
7
 
vote

.NET 2.0とAjaxを使用しているとき - 使用するべきです:

<事前> <コード> ScriptManager.RegisterClientScriptBlock

Ajax環境では、古いページ.ClientScriptバージョン

 

When you're using .Net 2.0 and Ajax - you should use:

ScriptManager.RegisterClientScriptBlock 

It will work better in Ajax environments then the old Page.ClientScript version

</div
 
 
0
 
vote

も使用できます。

<事前> <コード> var amountDue = document.getElementById('<%=YourControlName.ClientID%>');

これは、 'ctl00_footerContentHolder_Fees1_FeeDue' と呼ばれることを理解する必要なしに要素のクライアントIDを自動的に解決します。

 

Also you could use:

var amountDue = document.getElementById('<%=YourControlName.ClientID%>'); 

That will automatically resolve the client id for the element without you having to figure out that it's called 'ctl00_footerContentHolder_Fees1_FeeDue'.

</div
 
 
0
 
vote

私のJavaScriptが認識されていなかった理由の答えがまだ答えているのですが、その間に見つけた解決策(最初の場所で行われるべきではありません)は、代わりに<コード> Asp:CompareValidator を使用することです。 <コード> Asp:CustomValidator 。

 

While I would still like an answer to why my javascript wasn't being recognized, the solution I found in the meantime (and should have done in the first place) is to use an Asp:CompareValidator instead of an Asp:CustomValidator.

</div
 
 

関連する質問

1  ASP.NET 2.0 - 同じページ上のVisibleコントロールの検証は?  ( Asp net 2 0 validating nonvisible controls on the same page ) 
ValidationSummaryを使用して必須フィールドベリュアルコントロールを使用するアプリケーションを持っていて、「終了」ボタンをクリックすると、すべてのフィールドが検証されます。このページには、表示されているか目に見えなくなったそのいくつかの異なる部...

44  文字列が有効なJSONかどうかを判断する方法  ( How to determine whether a string is valid json ) 
PHPのための堅牢な(そして弾丸の証明)is_json関数スニペットを知っていますか?私(明らかに)文字列がJSONかどうかを知る必要がある状況を持っています。 HMM、おそらく jsonlint リクエスト/応答を通してそれを実行しますが、それは少しov...

2  SelectIneとSelectMany選択肢はSelectItemsによって制限されていますか?  ( Are selectone and selectmany choices bounded by selectitems ) 
JSF SelectOneとSelectManyコントロールを実行すると、指定されたSelectItemで定義された値の送信を許可するだけですか?私はパラメータのなりすましを懸念しています、そしてこれが組み込まれたならば、私は選択した値が有効な選択肢の1つで...

2  PHPの検証 - HTTP POST値を渡すサードパーティのチェックアウトに転送  ( Php validation passing http post values forwards to a 3rd party checkout ) 
これが可能かどうかわからない、私は他のヘルプガイドを見つけることはできませんので、これは不可能かもしれません... 私は、3番目の支払いプロセッサ(WorldPay)に変数の負荷を転送するチェックアウトページを持っています。 検証目的で2ページの間に並べてP...

35  ASP.NETカスタムクライアント側の検証  ( Asp net custom client side validation ) 
.NET 2.0 Webサイトでのユーザーコントロールのカスタム検証機能があり、支払われた手数料はかかりません。 ascx ファイルにバリデータコードを置き、 Page.ClientScript.RegisterClientScriptBlock() ...

1499  潜在的に危険な要求。フォーマ値がクライアントから検出されました  ( A potentially dangerous request form value was detected from the client ) 
ユーザーが < または<コード> > を含む毎回投稿するたびに、この例外がスローされます。 私は、誰かがテキストボックスにキャラクターを入力したので、例外を投げたり、Webアプリケーション全体をクラッシュさせたりすることについての議論に入りませんが、これを処理...

4  WPFの検証エラーに関するテキストボックス入力をキャンセルする  ( Canceling textbox input on validation error in wpf ) 
検証エラーが発生したときに、 TextBox でユーザー入力をキャンセルする方法を理解しようとしています。ユーザーが無効な文字を入力しようとすると、 TextBox に追加しないでください。 <コード> TextBox が無効な文字を受け入れるのを防ぐために...

40  ASP.NET RegureeExpressionValidatorで正規表現の場合は鈍感になります  ( Make regular expression case insensitive in asp net regularexpressionvalidator ) 
この正規表現を考える:<コード> "^[0-9]*s*(lbs|kg|kgs)$" 大文字と小文字を区別しないようにするにはどうすればよいですか。私は.NET正規表現バリデータでこれを使用しようとしているので、パターンで大文字と小文字を区別する必要があります。...

1  国際資源識別子検証  ( International resource identifier validation ) 
RFC 3986のURIの検証はかなり簡単です。 a href="http://mattfarina.com/2009/01/08/rfc-3986-url-validation"LEL="NOFOLLOW NOREFERRER"> :のような正規表現を使用...

6  jQuery ValidatorのInvalidHandlerにメッセージを表示する方法  ( How to display messages in invalidhandler in jquery validator ) 
jQueryバリデータをフォーム上で使用しようとしていて、無効なハンドラオプションのエラーのメッセージを取得するために理解しようとしています(または他の場所がある場合は、指示する)。 ユーザーが[送信]ボタンをクリックすると、最初のエラーが何であれ、エラーの...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有