C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: javascriptとcodebehindの処理について


(過去ログ 48 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■26017 / inTopicNo.1)  javascriptとcodebehindの処理について
  
□投稿者/ ビギナー太郎 (1回)-(2008/09/30(Tue) 15:32:50)

分類:[C#] 

はじめまして。
現在下記の処理を行いたいのですが、

@.テキストボックスに値を入力(※カーソル移動時に入力値のチェックを行う:JavaScriptで実装)
A.ボタン押下(※codebehindで実装)
B.@の入力値チェックがエラーのためあるラベルにメッセージを表示する


Aを実行した場合、@のチェックが行われ、ラベルにメッセージが出るのですが
Aの処理が行われしまいます。


Aの処理が実行されないよう解決策を教えて頂けないでしょうか。
(※但し、Bのメッセージ表示で「alert」で表示はしたくありません。)



引用返信 編集キー/
■26027 / inTopicNo.2)  Re[1]: javascriptとcodebehindの処理について
□投稿者/ みきぬ (120回)-(2008/09/30(Tue) 17:03:47)
No26017 (ビギナー太郎 さん) に返信
> Aを実行した場合、@のチェックが行われ、ラベルにメッセージが出るのですが
> Aの処理が行われしまいます。
>
ここの日本語がよくわからないけど、

ボタンをクリックしたときに、
・@のJavaScriptによる入力値チェックが行われ、チェックエラーの場合はラベルにメッセージを表示する
・コードビハインド側にある、Button1_Click イベント処理が実行される

という2つの処理があって、チェックエラーの場合は後者の処理はさせたくないってこと?

であれば対応は、
・ボタンのonclickイベント(JavaScript側)の最後に、チェック結果(TrueならOK,FalseならNG)をreturnする処理を入れる
・CustomValidatorを用意して、@の処理をCustomValidatorのクライアント側チェックとして実装し直す

のどちらかかな。
後者のほうがすっきりする(実はやったことがないので1回やってみたい)けど、前者でも困りはしないか…な。
引用返信 編集キー/
■26038 / inTopicNo.3)  Re[2]: javascriptとcodebehindの処理について
□投稿者/ Jitta (517回)-(2008/09/30(Tue) 22:55:17)
Jitta さんの Web サイト
No26027 (みきぬ さん) に返信
> ■No26017 (ビギナー太郎 さん) に返信
>>Aを実行した場合、@のチェックが行われ、ラベルにメッセージが出るのですが
>>Aの処理が行われしまいます。
>>
> ここの日本語がよくわからないけど、
>
> ボタンをクリックしたときに、
> ・@のJavaScriptによる入力値チェックが行われ、チェックエラーの場合はラベルにメッセージを表示する
> ・コードビハインド側にある、Button1_Click イベント処理が実行される
>
> という2つの処理があって、チェックエラーの場合は後者の処理はさせたくないってこと?
>
> であれば対応は、
> ・ボタンのonclickイベント(JavaScript側)の最後に、チェック結果(TrueならOK,FalseならNG)をreturnする処理を入れる
> ・CustomValidatorを用意して、@の処理をCustomValidatorのクライアント側チェックとして実装し直す
>
> のどちらかかな。
> 後者のほうがすっきりする(実はやったことがないので1回やってみたい)けど、前者でも困りはしないか…な。

JavaScript としては、同じようなコードが吐かれていたと思います。
ただ、onblur でやるより、onsubmit でやる方が、全部まとめて一度にチェックできるので、いいと思います。

もっとも、UX として、「エラーが先にわかるなら、先に知らせたい」というのはもっともで、
その辺は一つの議論になっていたりしますね。
ただ、onblur でやるときの一つの難点は、「エラーになる値が入力されていると、キャンセルできない」ということです。
Windows Forms では、チェックしないコントロールにすることで避けることはできますが、Web ではいろいろ面倒だと思います。


そんなこんなありますが、サーバー側でもちゃんとチェックしてください。
スクリプト切られていたら、ノーチェックです。

スクリプトが off にされていたら、どうします?

(って、みきぬさんへの返信じゃないな)
引用返信 編集キー/
■26048 / inTopicNo.4)  Re[3]: javascriptとcodebehindの処理について
□投稿者/ みきぬ (124回)-(2008/10/01(Wed) 10:52:24)
No26038 (Jitta さん) に返信
> JavaScript としては、同じようなコードが吐かれていたと思います。
> ただ、onblur でやるより、onsubmit でやる方が、全部まとめて一度にチェックできるので、いいと思います。
>
> もっとも、UX として、「エラーが先にわかるなら、先に知らせたい」というのはもっともで、
> その辺は一つの議論になっていたりしますね。
> ただ、onblur でやるときの一つの難点は、「エラーになる値が入力されていると、キャンセルできない」ということです。
> Windows Forms では、チェックしないコントロールにすることで避けることはできますが、Web ではいろいろ面倒だと思います。
>
Jittaさんの意図がよくわからなかったのですが、私の考えを書きます。

・Validatorを使わずにごりごりJavaScriptを書く
onblurでチェックするときには、チェックエラーでも最後に return false; をしなければいいだけの話だと思います。

・CustomValidator を使う
他の Validator(RequiredFieldValidatorとか)を使った場合、onblur(なのかな?たぶん)時にクライアント側チェック処理が走ることがありますが、検証エラーでもカーソルは抜けられたと記憶しています。
CustomValidator にクライアント側処理を入れて使ったことがないのですが、CustomValidator についてもおそらくおなじ挙動なのかなと想像しています。

・onclick ではなく onsubmit でチェック処理を行う
この場合、他に submitボタンがあったら、それをクリックしたときにもチェック処理が走ってしまうと思います。
でもこれは、関係ないボタンを submitボタンにしなければいい(UseSubmitBehavior=False)だけかな?
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -