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

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

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

Re[4]: テキスト入力後ENTERを押すとホストバックしてしまう


(過去ログ 55 を表示中)

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

■30986 / inTopicNo.1)  テキスト入力後ENTERを押すとホストバックしてしまう
  
□投稿者/ 初歩 (3回)-(2009/01/11(Sun) 17:27:43)

分類:[ASP.NET (VB)] 

テキストボックスに入力後、ENTERを押すと
ホストバックしてしまいます。
Autopostbackはfalse です。
ボタンを押した時だけ、ホストバックにしたいのですが


引用返信 編集キー/
■30993 / inTopicNo.2)  Re[1]: テキスト入力後ENTERを押すとホストバックしてしまう
□投稿者/ biac (12回)-(2009/01/12(Mon) 00:10:13)
biac さんの Web サイト
No30986 (初歩 さん) に返信
> テキストボックスに入力後、ENTERを押すと
> ホストバックしてしまいます。

HTML の form 要素に含まれた type="text" 属性を持つ input 要素に対して、 ユーザーが Enter キーを入力したときにフォームの内容が送信されるというのは、 ブラウザの実装によります。
※ この一文が理解できなければ、 HTML の勉強をしましょう。

IE や Firefox などで、 ブラウザの挙動をコントロールすることは、 HTML に Javascript のコードを埋め込んでやり、 かつ、 ブラウザが ( ユーザーの設定により ) そのコードの実行を許した場合に、 可能になります。
※ どのような Javascript のコードを書けばいいのか、 これまた別途勉強しましょう。

以上がクリアできたら、 そのように修正した HTML を、 どのようにすれば ASP.NET で送り出すことが出来るか、 という問題になります。 この部分だけが、 ASP.NET のお話です。

よろしいですか?
高度な Web アプリケーションを作るためには、 HTML, CSS, Javascript といった知識が必要になります。 ASP.NET などの 「仕掛け」 は、 それらを簡単なコーディングで Web サーバーから送出するためのものにすぎません。 「仕掛け」 に用意されていることから少しでも外れたことをしようとすると、 とたんに上述したような知識とスキルが必要になってしまいます。
今回だけでなく、 Web アプリケーションを作っていくと、 いろんな問題が出てくるでしょう。 解決する手順は、 次のような順序になります。
1. 問題のページで、 ブラウザが受け取っている HTML ソースを見る。
2. ブラウザ側の処理で問題が起きているのか、 それとも、 サーバー側の処理で問題が起きているのか、 切り分ける。
3. ブラウザ側の処理に問題がある場合、
3.a) HTML, CSS, Javascript, ...etc. のどこに問題があり、 どのように修正すればよいかを検討する。
3.b) その修正を、 Web サーバから送出する HTML に反映させるにはどうすればよいかを検討する。


…と、 脅かしておいた上で。 f(^^;

Web サーバーから送出される HTML のフォームの 「送信ボタン」 は、 デフォルトでは input type="submit" ですが、 type="button" に替えてやると、 IE ではテキストボックスでの Enter に反応しなくなったはずです。 ( 繰り返しますが、 実装依存です。 他のブラウザではどうなるかわかりませんよ。 )

MSDN フォーラムの次のスレッドが参考になるかな。
http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=1441676&SiteID=7


※ 最終的に Visual Studio 上で行う作業は、 たぶん 1行で書けます。 そこだけ知りたい! って思うかもしれませんが、 その手順に気付くためには上に書いたようなバックボーンが必要なので、 あえて書きません。
引用返信 編集キー/
■30999 / inTopicNo.3)  Re[2]: テキスト入力後ENTERを押すとホストバックしてしまう
□投稿者/ 初歩 (4回)-(2009/01/12(Mon) 18:56:29)
UseSubmitBehaviorはtrueだとsubmitボタンになってしまい[Enter]に反応してしまいます。
input type=buttonにするにはfalseにします。
↑でホストバックはしなくなりました
でも
<script language="javascript">
function nextfocus( code, next )
{
if( code == 13 )
{
document.all.item( next ).focus();
}
}
</script>
で、textboxへフォーカスを移動しようとすると、フォーマスが移動できない状態です。のエラーになってしまいます。



引用返信 編集キー/
■31014 / inTopicNo.4)  Re[3]: テキスト入力後ENTERを押すとホストバックしてしまう
□投稿者/ biac (13回)-(2009/01/13(Tue) 13:51:34)
biac さんの Web サイト
No30999 (初歩 さん) に返信
> で、textboxへフォーカスを移動しようとすると、フォーマスが移動できない状態です。のエラーになってしまいます。

もうお分かりだと思いますが、 その現象は Javascript の問題ですよね。 ( 少なくとも、 「フォーカスを移動しようと」 しているのは Javascript )

お手数ですが、 Javascript の分類で、 新しくトピックを開いてください。
そのときには、 現象を再現できる最小の HTML ソースも載せてもらうと、 解決が早くなると思います。

引用返信 編集キー/
■31064 / inTopicNo.5)  Re[4]: テキスト入力後ENTERを押すとホストバックしてしまう
□投稿者/ 初歩 (6回)-(2009/01/14(Wed) 20:08:08)
<%@ Page Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>form1</title>
<script language="javascript" type="text/javascript">
function nextfocus(code,next){

if(code ==13){

document.all.item(next).focus();

}

}
</script>
</head>
<body>
<form name="form1">
<input type="text" name="TextBox1" onkeypress="nextfocus(window.event.keyCode,'TextBox2')" id="TextBox1" language="javascript" onclick="return Text1_onclick()" /><br />
<input type="text" name="TextBox2" onkeypress="nextfocus(window.event.keyCode,'TextBox3')" id="TextBox2" /><br />
<input type="text" name="TextBox3" id="TextBox3" /><br />
<input type="button" name="Button1" value="Button" onclick="submit()" />
</form>
</body>
</html>

asp.netでない普通のHTMLではフォーカスが移動します。
asp.netだとjavascriptのエラーで
エラー: フォーカスをコントロールに移動できません。コントロールは表示されていない、使用できない状態、またはフォーカスを受け入れない種類です。のエラーになってしまいます。

引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -