- - PR -
ASP20 クライアントスクリプトを埋め込むとValidatorが効かない?
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2008-08-05 16:14
[Visula Studio 2005 SP1] ASP.Net2.0 (VB.Net)
Page_Loadで、以下のようにクライアントスクリプトを埋め込む とRangeValidatorが機能せず(?)、Validatorのエラーであっても ポストバックしてしまうのですが、わたしのコーディングに、 問題があるのでしょうか? Dim sb As StringBuilder = New StringBuilder(String.Empty) sb.Append("<script type='text/javascript'>") sb.Append("function myCheck() {") sb.Append("if document.form1.tbxInput.value=="""" ") sb.Append(" { return confirm( '未入力ですが?') }") sb.Append(" }") sb.Append("</script>") ClientScript.RegisterClientScriptBlock(Me.GetType(), "Check1", sb.ToString(), False) btnExec.Attributes("OnClick") = "return myCheck()" | ||||
|
投稿日時: 2008-08-05 16:51
実際にその(スクリプトを埋め込んだ)ボタンが押されたとき何をしようとしているか、
吐かれたHTMLを見れば原因がわかると思います。 _________________ //--- あやのこうじ@RapidExpress | ||||
|
投稿日時: 2008-08-05 18:54
スクリプトがエラーになっていると思います。
| ||||
|
投稿日時: 2008-08-06 12:56
RapidExpressさん、Jittaさん 有難うございます。
スクリプトのエラーには、なっていませんでしたが、 ソースの表示で、HTMLを確認してみました。 Validatorを使用すると、自動的にボタンのOnClickが 記述されるのですね。別に、javascriptを自分で書き ボタンのOnClickを上書きしたため、Validatorが機能 しなくなってしまったようです。 両立する方法は、ないのかなと思いますが、 とりあえず、原因は、このせいだと思います。 | ||||
|
投稿日時: 2008-08-06 14:38
Javascript は、文の終端に ";" が必要ですから、お忘れなく。
# 実行されてないなら、エラーにならないね | ||||
|
投稿日時: 2008-08-06 14:48
Jittaさんと一部被りましたが、
↑で示したように括弧やセミコロンがないと、JavaScriptのエラーになるような。 あと3つ気がついた点。 1. 最後の行は、Button.OnClientClick プロパティで代用できるかなぁ 2. RegisterClientScriptBlock() の最後の引数を True にすれば、わざわざ scriptタグを書かなくてもいいかなぁ 2'.aspxファイルに直接 JavaScript を書いてもいいかも 3. "form1" や "tbxInput" と書いている部分は、Control.ClientID に置き換えたほうがいいかなぁ ※2'を追加 </font> [ メッセージ編集済み 編集者: rain 編集日時 2008-08-07 09:50 ] | ||||
|
投稿日時: 2008-08-08 10:46
Jittaさん、rainさん 有難うございます。
>Javascript は、文の終端に ";" が必要ですから、お忘れなく。 有難うございます(汗) >1. 最後の行は、Button.OnClientClick プロパティで代用できるかなぁ >2. RegisterClientScriptBlock() の最後の引数を True にすれば、わざわざ scriptタグを書かなくてもいいかなぁ >2'.aspxファイルに直接 JavaScript を書いてもいいかも >3. "form1" や "tbxInput" と書いている部分は、Control.ClientID に置き換えたほうがいいかなぁ RegisterClientScriptBlock() の True, Falseをよく知らず使ってしまっていました。 勉強なりますっ! |
1