OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

onBlurのイベントを使ってデータベースを参照し値を代入する方法

  • 困ってます
  • 質問No.205440
  • 閲覧数649
  • ありがとう数2
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 100% (11/11)

伝票入力する際、ACCESS等で作ると、例えば「得意先コード」を入力すると
「得意先名」が表示される。という画面がありますよね。
そこで先輩方にお伺いしたいのですが、
ASPを使って同様のことをやる場合、どんな手法があるのでしょうか?
私なりに考えた方法が2つほどあるのですが、これが正しいのでしょうか?
<案1>
・子ウインドウを表示し、そこでデータベースを参照し、親ウインドウに値を代入。
---親ウインドウ側---
<INPUT type="text" name="text1" onBlur="GetJTname()">
<INPUT type="text" name="text2">

<script language="JAVAScript">
function GetJTname(){
 Newwin=window.open("test1_1.asp?a=" + document.form1.text1.value,"sample","width=240,height=180");
}
</script>
---子ウインドウ側---
<form name="form2">
<INPUT type="text" id=text1 name=text1 value="<%=rs.Fields("name_inf").Value%>">
</form>
<script language="JAVAScript">
function action(){
 window.opener.document.form1.text2.value=document.form2.text1.value;
 window.close();
}
</script>

<案2>
・自分自身にデータを投げる
<INPUT type="text" name="text1" onBlur="GetJTname()">
<INPUT type="text" id=text2 name=text2
QS=Request.QueryString("B")
value="<%if QS <>"" then %><%=Tname(QS)%><%end if%>">
<%function Tname()
<script language="JAVAScript">
function GetJTname(){
 location.href ='test1.asp?B=' + document.form1.text1.value;
}
</script>
<%function Tname(code)
'... ADOの処理
end function%>

(案1)では、当然ながら一瞬ウインドウが開きます。
(案2)では、せっかく入力したTEXT1の内容が消えてしまいます。
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.2
レベル14

ベストアンサー率 50% (1122/2211)

> 新たな画面を開いている関係上、レスポンスが悪いのが気になっていました。

姑息な手段の域を出ていませんが、こっそりフレームを切ってしまう、という手もあります。

どこでも良いんですが、左端とかにほそーく、かつ、ボーダを無しにして、そこのフレームで
処理を動かしちゃう。

あと、処理をするイベントは onBlur よりは onChange の方が良いでしょう。

onChange もフォーカスを失ったときにしか出てこないのですが、値が変わったときにだけ
出てきたはずです。


どちらにしても、Web ってこういう処理は厳しいですよね。件数が少なければ、
全ての得意先を埋め込んで、JavaScript で検索の処理を書いてしまうという手も
ありますけど。
お礼コメント
sgh

お礼率 100% (11/11)

回答ありがとうございます。

>処理をするイベントは onBlur よりは onChange の方が良いでしょう。
まだ、JavaScriptに慣れていないので、"onChange"イベントをリファレンス書より見つけだすことができていませんでした。
"DHTML","JavaScript","VBScript","ASP","SQL"のリファレンス本を5冊並べながら試行錯誤しています。

>どちらにしても、Web ってこういう処理は厳しいですよね
じつは、このお言葉を待っていたような気がします。
専門家の方が、簡単ではないという認識であれば、別の方法も検討に入れなくてはいけないと思ったしだいです。

>全ての得意先を埋め込んで...
確かに件数が少なければ良いと思いますが、今回は3000件以上のデータがあるのと、
常に変化している情報のため、難しいと思います。
投稿日時 - 2002-01-28 13:55:04
-PR-
-PR-

その他の回答 (全1件)

  • 回答No.1
レベル14

ベストアンサー率 50% (1122/2211)

> (案1)では、当然ながら一瞬ウインドウが開きます。 スクリーン(画面)の外に表示してはいかが? ブラウザが表示されているスクリーンの大きさは、window.screen オブジェクトの width、height プロパティで、それぞれ幅、高さが取得できます。 > (案2)では、せっかく入力したTEXT1の内容が消えてしまいます。 パラメータとして tex ...続きを読む
> (案1)では、当然ながら一瞬ウインドウが開きます。

スクリーン(画面)の外に表示してはいかが?

ブラウザが表示されているスクリーンの大きさは、window.screen オブジェクトの
width、height プロパティで、それぞれ幅、高さが取得できます。


> (案2)では、せっかく入力したTEXT1の内容が消えてしまいます。

パラメータとして text1 を渡しているのだから、値を設定すれば良いんじゃないですか?

<INPUT type="text" name="text1" onBlur="GetJTname()" value="<%=○○○%>">

って。

# 私、ASPはやったことが無いので、パラメータの取得をどうやるのか分かりません m(_ _)m
# request みたいなオブジェクトがありませんか?
お礼コメント
sgh

お礼率 100% (11/11)

早速のご回答ありがとうございます。

>スクリーン(画面)の外に表示してはいかが?
なるほど。やってみます。
新たな画面を開いている関係上、レスポンスが悪いのが気になっていました。
本当は「onBlur」ではなく「AfterUpdate」の様なイベントがあればいいのにと思っているしだいです。
参照ボタン→子ウインドウ→選択→代入 のプロセスの方がいいような気もしてきました。

>パラメータとして text1 を渡しているのだから、値を設定すれば良いんじゃないですか?
まさにご指摘の通りですが、ほかにもいっぱいコントロールがあるのです。
中でも100文字ぐらいのテキストエリアが複数ありますので、
あまりでかいパラメータを渡すのもどうか?と思っています。

余談ですが、私はACCESS育ちで、HTMLはリファレンスを見ながら試行錯誤しています。
投稿日時 - 2002-01-25 21:35:16
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ