- - PR -
SetFocusについて
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-11-22 23:05
これが、「サーバで行うのは当然として、クライアントでも行う」という意味なのか、「サーバでは検証せず、クライアントだけで検証する」という意味なのか、とっても気になりました。 _________________ | ||||||||||||
|
投稿日時: 2006-11-23 01:02
うーん、うまく行かないとはどんな風にうまくいかないんですか?
そんな長くないからこっちのコードを貼ってみます
追記 って、何で C# で書いてるんだw ValidationGroup って初めて知った。。。 _________________ かるあ のメモ http://karua.at.webry.info/ [ メッセージ編集済み 編集者: かるあ 編集日時 2006-11-23 01:04 ] | ||||||||||||
|
投稿日時: 2006-11-24 01:22
Validatorが生成するスクリプトって、ASP.NET1.1と2.0で全然違いますもんね。 少なくともクライアント側では、Validatorに頼らず自前でスクリプトを書いちゃうのが 一番簡単で確実なような気がします。 | ||||||||||||
|
投稿日時: 2006-11-24 17:42
皆様、ご返信ありがとうございます。
>かるあさん(をはじめ皆様) <現状> 「うまくいかない」とは、クライアントで文字種(ValidationExpression)チェックはなされるが、フォーカスがエラーとなる文字列が入力されたテキストボックスに戻らないという状態です。 <要件(再確認)> 要件は「フォーカスがエラーとなる文字列が入力されたテキストボックスに戻る」ということです。但し、このフォーカスの設定はサーバ側ではなくて、クライアントにて行いたい、ということでした。 <追加要件> 前提として、フォーカスがテキストボックスに設定されていても、enterキー押下で当該ボタン押下の効果は発生しない。(ボタンクリックが発生するのは、フォーカスが当該ボタンに設定された上で押下/クリックされる場合のみとする。) ・・・ということで、お願い致します。 >Jittaさん 「サーバで行うのは当然として、クライアントでも行う」という意味です。 質問の仕方についてのご指摘は勉強になるので、本当にありがたいと思います。 >ぼのぼのさん そうかもしれません。。。 土日に悩んでみます。。。 皆さんのご返信、本当に勉強になり、大いに感謝しております。 今後とも宜しくお願い申し上げます。 | ||||||||||||
|
投稿日時: 2006-11-25 02:10
要求が正しく理解できていないかもしれませんが、
TextBoxからフォーカスが抜けるタイミング(onblurイベント)の処理を抑制したのであれば、onblurイベントを上書きしてしまえばOKのようです。 とりあえず、IE6で簡単に確認したサンプルの抜粋を張っておきます。あと、チェック処理はonchangeイベントなので抑制したければ同様に上書きすればOKだと思います。 <html xmlns="http://www.w3.org/1999/xhtml" > ... </body> <script language=javascript> document.all["TextBox1"].onkeypress = null; document.all["TextBox1"].onblur = null; Form1.onkeypress = function() { if (event.keyCode == 13) return false;} </script> </html> | ||||||||||||
|
投稿日時: 2006-11-27 17:56
dotnetmemoさん、ご返答ありがとうございます。
なぜでしょうか、スクリプトエラー(javascriptにて実装)となってしまいます。 以下、実験してみたコードです。 <script type="text/javascript" language="JavaScript"> //document.all["XXXXXXX"].onBlur = null; //document.all("XXXXXXX").onBlur = null; //document.all("XXXXXXX").onBlur = "null"; //document.all("XXXXXXX").onBlur = false; //document.all("XXXXXXX").onBlur = "false"; </script> onBlurイベントの抑制という観点から以下のようなダミー関数を呼ぶパターンでもやってみました。 //document.forms[0].XXXXXXX.onBlur = funcDummy; //document.all["XXXXXXX"].onBlur = funcDummy; //document.all("XXXXXXX").onBlur = funcDummy; //document.all("XXXXXXX").onBlur = "funcDummy"; //document.all("XXXXXXX").onBlur = funcDummy(); //document.all("XXXXXXX").onBlur = "funcDummy()"; <ダミー関数> function funcDummy() { return false; } いずれも、スクリプトエラーとなります。。。なぜでしょうか。 .NETの質問ではなくなっておりますが。。。 | ||||||||||||
|
投稿日時: 2006-11-27 18:20
どの時点で Script エラーが起きているか検証しましたか? たとえば、 > document.all["XXXXXXX"] この時点で、正しいオブジェクトが取得できているかを確認するだけで、ぐっと解決に近づきます。 デバッグの基本は問題の切り分けです。
'B' が大文字になっていますね。
DOCTYPE は、HTML4.0、HTML4.01 Transitional、HTML4.01 Frameset、XHTML1.0 のいずれかなのですね。 (注意 : 本題とは関係のないところです) _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||
|
投稿日時: 2006-11-27 22:29
とりあえず、こちらで動作しているコードをのせておきます。
また、document.allはIE依存したかもしれませんので、getElementByIdに変更しておきました。 <%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default4.aspx.vb" Inherits="Default4" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>無題のページ</title> </head> <body> <form id="Form1" runat="server"> <div> <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> <asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ControlToValidate="TextBox1" ErrorMessage="数値を入力してください" SetFocusOnError="True" ValidationExpression="[0-9]*">*</asp:RegularExpressionValidator> <br /> <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox> <br /> <asp:Button ID="Button1" runat="server" Text="Button" /></div> </form> </body> <script language="javascript" type="text/javascript"> <!-- document.getElementById("TextBox1").onkeypress = null; document.getElementById("TextBox1").onblur = null; Form1.onkeypress = function() { if (event.keyCode == 13) return false;} --> </script> </html> |