伝票入力する際、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の内容が消えてしまいます。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

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



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

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

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

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


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

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

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

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

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

お礼日時:2002/01/28 13:55

> (案1)では、当然ながら一瞬ウインドウが開きます。



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

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


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

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

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

って。

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

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

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

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

余談ですが、私はACCESS育ちで、HTMLはリファレンスを見ながら試行錯誤しています。

お礼日時:2002/01/25 21:35

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q 内に書くことはできません」

元アルバイト先に頼まれてサイトを作り運営しているのですが、わからないことがあるので教えて下さい。

サイトはXHTML1.0 Transitional で作っており、ここに、http://fmono.sub.jp/ の「w3Analyzer」を組み込みアクセス解析をしています。サイト自体もこのアクセス解析も正常に動作しています。
ただ、このサイトをhttp://openlab.ring.gr.jp/k16/htmllint/htmllint.htmlで構文チェックすると、アクセス解析のタグにエラー「<img>を~行目の<script>~</script>内に書くことはできません。」が表示されてしまいます。
エラーが表示されるタグは下記のようなものです。

<script type="text/javascript">
document.write('<img src="http://~/w3a/writelog.php?ref='+document.referrer+'" width="1" height="1" />');
</script> >

アクセスログは普通に取得できているので問題ないのですが、もし上記エラーを回避する方法があればご教授下さい。よろしくお願いします。

元アルバイト先に頼まれてサイトを作り運営しているのですが、わからないことがあるので教えて下さい。

サイトはXHTML1.0 Transitional で作っており、ここに、http://fmono.sub.jp/ の「w3Analyzer」を組み込みアクセス解析をしています。サイト自体もこのアクセス解析も正常に動作しています。
ただ、このサイトをhttp://openlab.ring.gr.jp/k16/htmllint/htmllint.htmlで構文チェックすると、アクセス解析のタグにエラー「<img>を~行目の<script>~</script>内に書くことはできません。」が表示されてし...続きを読む

Aベストアンサー

XHTML には「ホンモノの XHTML」と「ニセモノの XHTML」があります。「ホンモノの XHTML」とは application/xml または application/xhtml+xml として識別されるもの、「ニセモノの XHTML」は text/html で識別されるものです。

※実際にはどちらも本物です。ここでは「HTML 互換として処理される XHTML」を「ニセモノ」、「XML として解析される XHTML」を「ホンモノ」と、カタカナ&カッコ付きで書いています。

「ホンモノの XHTML」として見れば、質問文のソースは妥当性違反です。なぜなら、img 要素のタグがエスケープされていないため、これがスクリプトの一部ではなく文書構成要素だと判断されるからです。XHTML 1.0 のスキーマは、script 要素内に img 要素が出現することを許していません。もちろん、スクリプトとしても正しく動作しません。

従って、XML のルールに従ってエスケープする必要があります。特に「<」と「&」は必ずエスケープしなければなりません。

document.write('&lt;img .... />');

ですが面倒なことに、「ニセモノの XHTML」ではこれが動作しなくなります。「ニセモノの XHTML」は、HTML との互換性のために script 要素内の「<」「&」をうまく扱ってくれるのですが、それが仇となり、上記では「&lt;」が「<」に戻りません。

ならば、コメント区間にするのはどうでしょう。XML でもコメント内なら「<」「&」が現れても大丈夫です(ただし「--」だけは駄目です)。

<script type="text/javascript"><!--
document.write('<img .... />');
//--></script>

「ニセモノの XHTML」ならこれでも構いません。しかし、「ホンモノの XHTML」では、コメントは本当に破棄されてしまい、上記では動作すらしなくなります。

そこで、XML/HTML のルールを使わず、JavaScript のルールでエスケープすることを考えます。

document.write('\u003Cimg .... />');

これなら大丈夫でしょう。XML/HTML に限らず、言語が混在する際は必ず適切なエスケープを施す必要があります。エスケープを避けたければ外部スクリプトにして下さい。


なお、ここには別の問題があります。そもそも「ホンモノの XHTML」では、document.write を使用できません。これは HTML 互換の機能だからです(HTML5 に明記されています)。

XHTML を採用するのであれば、それが「ホンモノ」でも「ニセモノ」でも大丈夫なよう、document.write に頼らないコードを作成して下さい。あるいは try...catch で括るなどして、「ニセモノ」として処理されたときのみコードが動作するよう工夫して下さい。あるいはいっそ、XHTML を止めるのも 1 つの選択でしょう。

XHTML には「ホンモノの XHTML」と「ニセモノの XHTML」があります。「ホンモノの XHTML」とは application/xml または application/xhtml+xml として識別されるもの、「ニセモノの XHTML」は text/html で識別されるものです。

※実際にはどちらも本物です。ここでは「HTML 互換として処理される XHTML」を「ニセモノ」、「XML として解析される XHTML」を「ホンモノ」と、カタカナ&カッコ付きで書いています。

「ホンモノの XHTML」として見れば、質問文のソースは妥当性違反です。なぜなら、img 要素のタ...続きを読む

Qで、Q1に後で値を設定して表示するには

お世話になります。
<input type="text" name="Q1">で、Q1に後で値を設定して表示するにはどうしたら良いものでしょうか。
name="Q1"
と、しているので、
onMousedown="function()"
で、nameでしてしたエリアに値を書き込めば、できると思うのですが、
このfunction()をどのように書いたらよいものか、いろいろ調べてもわかりません。
何とかご教示願えないでしょうか。
よろしくお願いします。

Aベストアンサー

javascriptを利用することで出来ます。
こんな感じで動くでしょう。
ちなみにテキストボックスなどをjavascriptで操作する場合は
idをつけておくと便利です。

これ以上をやりたいというのであれば
参考URLなど見て勉強してみてください
<html>
<head>

</head>
<body>

<input type="text" id="Q1" name="Q1" onmousedown="hoge()">
</body>
<script type='text/javascript'>
function hoge()
{
Q1.value = ""; //""のなかに設定する値
}
</script>

参考URL:http://www.parkcity.ne.jp/~chaichan/src/javasc21.htm

Q

▼次のようにページ内のdivタグのidの名前によって、formタグ内の要素をdisableにすることはJava scriptによって可能でしょうか?

<div id="AA">のとき、別の場所にある<form id="BB">内のselect要素などすべての要素をdisableにする。

また同時に、id="BB"に指定したスタイルシートの記述を書き換えることは可能でしょうか?

何かよい方法をご存知でしたら教えてください。よろしくお願いいたします。

Aベストアンサー

>なぜか時々エラーが出ます。
ウチでちょっと試した程度ではエラーが発生しませんでした。
できましたら、発生したときのメッセージや場所また、ブラウザの種類なども教えてください。

以下は、予防的な意味での注意点についてちょっと書きます。
>return false;

は、必要ないです。
書かない方がいいと思います。
==nullの場合の処理が必要ないなら
!=nullにすればよいです。
もしくは
return false;でなくて
;
のように空文でもよいです。
あと、idに使っている名前と同じ名前を変数名として使わない方が良いです。
つまり、
id="soldout"の時に
var soldout;という風にはしない方が良いです。
同じでなければ、cartFormでもなんでもかまいません。
あと、scriptは、
<!--
(スクリプトの中身)
//-->
のように
<!--
//-->
で囲むようにします。

getElementById
は、ブラウザやのブラウザのバージョンによっては使えないことがあります。
その場合は、使えるかどうかを調べる必要があります。

<script type="text/javascript">
<!--
function stockStatus (num){
var f=document.getElementById("soldout");

if(f!=null){
for (var i =0; i<=f.length -1 ;i++){
f.elements[i].disabled=num;
}
}
}
//-->
</script>

>なぜか時々エラーが出ます。
ウチでちょっと試した程度ではエラーが発生しませんでした。
できましたら、発生したときのメッセージや場所また、ブラウザの種類なども教えてください。

以下は、予防的な意味での注意点についてちょっと書きます。
>return false;

は、必要ないです。
書かない方がいいと思います。
==nullの場合の処理が必要ないなら
!=nullにすればよいです。
もしくは
return false;でなくて
;
のように空文でもよいです。
あと、idに使っている名前と同じ名前を変数名として...続きを読む

Q

人気Q&Aランキング

おすすめ情報