出来るのだASP Q&A掲示板(過去LOG)
訪問数 52046
昨日 889
今日 776 【PR】 パソコン入門からIT専門書まで幅広く取り揃えています。セブン-イレブン受取り手数料無料のセブンアンドワイ。 |
![]() ![]() ![]() ![]() ![]() |
![]() ![]() |
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
[5236] テキストBOXの値の受け渡しについて |
投稿者:食事睡眠ありなみん?さん 2005/09/06 16:23:05 |
以下のことについて、教えて下さい。 ****test.asp********************************************* <HTML> <BODY bgcolor="#ccffcc"> <table> <tr> <form> <INPUT type="submit" value="検索実行" method="post" onClick=MakeChild() target="_blank"> <td>1.検索</td> <td><input type="text" name="ID" /></td> </form> </tr> </table> <br></body> </html> <script LANGUAGE="javascript"> <!-- function MakeChild() { window.open("child.asp","","scrollbars=1"); } --> </script> ****child.asp****************************************** ID = Request.Form("ID") test.aspでテキストBOXに入力された文字をchild.aspに渡したいです。 上記のようにしていますが、うまくいきません。 何がいけないのでしょうか? アドバイスお願いします。 |
[5237] Re:テキストBOXの値の受け渡しについて |
投稿者:暇人さん 2005/09/06 18:45:58 |
ポイント1 > <form> > <INPUT type="submit" value="検索実行" method="post" onClick=MakeChild() target="_blank"> > <td>1.検索</td> > <td><input type="text" name="ID" /></td> > </form> 以上の所を見てみると、FormのSubmit先が指定されていない。当然値が移動しない。 ポイント2 > function MakeChild() > { > window.open("child.asp","","scrollbars=1"); > } 以上のスクリプトではただchild.aspを別画面で開くだけ。値が移動していない。 方法としては 1、別画面を[名前を指定して]開いてからSubmit(POST)する 2、別画面を開く際にクエリ(URL)で渡す。 簡単なのは2、ただアドレスに値が入ってくるのがいやな人は1を使うこともある。 動作の保証としては2を推奨します。 以下パターン2の場合。 修正点としては<form>タグのNAME属性には指定をいれる。 submitボタンからbuttonへタグを変える(誤作動防止) <form name="hoge"> <INPUT type="button" value="検索実行" method="post" onClick=MakeChild() target="_blank"> <input type="text" name="hid"> ↑ IDなんてタグは使わないようにした方が良いと思います。 ID属性と間違えやすく、誤作動の原因となります。(推奨) javaScriptも修正する function MakeChild() { var strhid = document.hoge.hid.value; window.open("child.asp?hid=" + strhid,"","scrollbars=1"); } 後は受け取り側でRequest.QueryString("hid")でキャッチする。 |
[5238] Re:テキストBOXの値の受け渡しについて |
投稿者:食事睡眠ありなみん?さん 2005/09/07 8:23:56 |
暇人さん、非常にご丁寧に教えて頂いてありがとうございます。 教えて頂いた通り、2の方法でテストし、動作することを確認できました。 Submit先の指定、値の移動等全くできていませんでしたね…。 しかし、教えて頂いたことで理解できました。ありがとうございます。 アドレスバーやツールバーも非表示にしたかったので2で問題ないかな と思います。 本当にご丁寧にありがとうございました。 また投稿する際には是非お願いします。 |
[5239] Re:テキストBOXの値の受け渡しについて |
投稿者:食事睡眠ありなみん?さん 2005/09/07 8:50:09 |
暇人さん、先程に引き続き教えてもらいたいことがあります。 出来ればいいなというお願いなんですが、 先程教えて頂いた方法で目標は達成できました。 それでchild.asp画面が開く時、またはchild.asp画面表示後、 F5キーにて更新を行う時に 画面のメニューバー? (○○○ - Microsoft Internet Explorerと書いてあるところ)に 「http://MyTestServer/test/child.asp?hid=00 - Microsoft Internet Explorer」 と一瞬(検索処理中)ではありますが、アドレスが表示されます。 これを表示しないようにすることは可能でしょうか?? これはさすがに無理じゃないかと… もし方法があるのであればアドバイスお願いします。 直接、画面を開かせることを極力避けたいのが理由でして これも可能なら隠したいということなんです。 宜しくお願いします。 |
[5241] Re:テキストBOXの値の受け渡しについて |
投稿者:食事睡眠ありなみん?さん 2005/09/07 9:51:24 |
暇人さん、またまた先程に引き続き教えてもらいたいことがあります。 一つ前の質問よりもこちらが優先かも知れません。 (勝手なことをすみません) 先程のようにテキストBOX一つに対して「検索実行」ボタンを一つ用意して 検索結果をchild.aspに表示しました。 それで検索条件をもうひとつ追加したいです。 先程のものがコード検索で追加したいのが場所検索という感じです。 1.コード検索 テキストBOX 「検索実行」 2.場所検索 テキストBOX 「検索実行」 それで自分なりに先程のソースを改造して色々やってみましたが うまく動作しません。 やっていて疑問に思ったことを羅列しますと… 1.<form name="hoge">は追加するほうも"hoge"で良いのですか?それとも別名にする? "hoge"の場合、別名の場合でやってみましたがうまくいかなかったです。 2.<input type="text" name="hid">も当然nameを変える必要があるように思うのですが、 var strhid = document.hoge.hid.value;でdocument.の後にピリオドを入力しても それ以降に出てきません。document.hoge.hbasyo.valueというようにならない。 以上のようなことでうまく動作できません。 お手数ですが、アドバイスお願いします。 |
[5242] Re:テキストBOXの値の受け渡しについて |
投稿者:食事睡眠ありなみん?さん 2005/09/07 10:42:39 |
もうひとつだけ質問させて下さい。 先程のようにボタンではなく、リンクを使用する場合は どのようにすれば良いのでしょうか? (目的はツールバーやアドレスバーを非表示にした child.asp画面を表示したい) 先程と違いテキストBOXは必要ないのでchild.aspを表示できれば良いです。 以下のようにテストしてみましたが駄目でした。 <form name="hoge"> <INPUT type="button" value="検索実行" method="post" onClick=MakeChild() target="_blank"> <input type="text" name="hid"> ↓このように修正 <td><a href=""javascript:MakeChild()"" target="_blank">表示実行</a></td> function MakeChild() { window.open("child.asp","","scrollbars=1"); } これを実行するとアドレスバーに「about:blank」と書かれたページが表示されます。 画面は真っ白です。 他のサンプルを見て同じようにしたつもりなんですが… どうしてでしょうか? これについてもアドバイスお願いしたいです、すみません。 |
[5243] Re:テキストBOXの値の受け渡しについて |
投稿者:ryuさん 2005/09/07 11:21:22 |
・複数の値を受け渡す 少しやり方が変わりますが、以下の方法はいかがでしょう? <form name="hoge" method="post"> formに属性を付けて↑method="post" 同一form内に追加するテキストボックスを別名で作ります。 <INPUT type="button" value="検索実行" onClick=MakeChild(this) target="_blank"> ↑こいつも同一form内に として、、、 JS部分で function MakeChild() { window.document.hoge.method = "POST"; window.document.hoge.action = "child.asp"; window.document.hoge.submit(); } 受け取る側では、Request.Formで受け取るようにすればいいのでは? こんな感じでフォームの値を受け渡すようにすれば、複数の値を放り投げられます。 あ、もち↑のまんまじゃ動きませんよ。 window.openとか書いてないので、その辺はいじってください(_ _) ・リンクを使用する href=""javascript:MakeChild()"" ↑href=の部分はパス(URLなど)を入力する部分です。 詳しくは、、、 http://www.tohoho-web.com/www.htm をご覧ください(JSとか、特に) |
[5244] Re:テキストBOXの値の受け渡しについて |
投稿者:暇人さん 2005/09/07 11:44:29 |
問題なのはここです。 <a href=""javascript:MakeChild()"" target="_blank"> targetいらないのに入れているからです。 javaScriptでwindow.openするんだからいらないでしょう?余計なものつけないの。 > もうひとつだけ質問させて下さい。 > 先程のようにボタンではなく、リンクを使用する場合は > どのようにすれば良いのでしょうか? > (目的はツールバーやアドレスバーを非表示にした > child.asp画面を表示したい) > 先程と違いテキストBOXは必要ないのでchild.aspを表示できれば良いです。 > 以下のようにテストしてみましたが駄目でした。 > > <form name="hoge"> > <INPUT type="button" value="検索実行" method="post" onClick=MakeChild() target="_blank"> > <input type="text" name="hid"> > > ↓このように修正 > > <td><a href=""javascript:MakeChild()"" target="_blank">表示実行</a></td> > > function MakeChild() > { > window.open("child.asp","","scrollbars=1"); > } > > これを実行するとアドレスバーに「about:blank」と書かれたページが表示されます。 > 画面は真っ白です。 > 他のサンプルを見て同じようにしたつもりなんですが… > どうしてでしょうか? > これについてもアドバイスお願いしたいです、すみません。 > |
[5245] Re:テキストBOXの値の受け渡しについて |
投稿者:暇人さん 2005/09/07 12:04:30 |
URLに表示されるのが嫌ならSubmitする方法でやってくださいといったはずですが。 たとえ隠せてもそもそも履歴に残るでしょう? クエリで渡している以上しょうがないです。 見かけ上隠す手は強引な手があることはあります。綺麗じゃないんで好きじゃないですがとりあえず見えなければ良いなら var test = document.[フォーム名].[タグ名].value; var strURL = "child.asp"; strURL = strURL + "?test=WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW"; //適当な長さにしてください。 strURL = strURL + '&[タグ名]=' + test; window.open(strURL,"","scrollbars=1"); URLに十分な長さのダミー値を入れてURLの表示されるバーからあふれさせるという強引な手です。うわキタナイ。 > 暇人さん、先程に引き続き教えてもらいたいことがあります。 > 出来ればいいなというお願いなんですが、 > 先程教えて頂いた方法で目標は達成できました。 > それでchild.asp画面が開く時、またはchild.asp画面表示後、 > F5キーにて更新を行う時に > 画面のメニューバー? > (○○○ - Microsoft Internet Explorerと書いてあるところ)に > 「http://MyTestServer/test/child.asp?hid=00 - Microsoft Internet Explorer」 > と一瞬(検索処理中)ではありますが、アドレスが表示されます。 > これを表示しないようにすることは可能でしょうか?? > これはさすがに無理じゃないかと… > もし方法があるのであればアドバイスお願いします。 > 直接、画面を開かせることを極力避けたいのが理由でして > これも可能なら隠したいということなんです。 > 宜しくお願いします。 > |
[5246] Re:テキストBOXの値の受け渡しについて |
投稿者:食事睡眠ありなみん?さん 2005/09/07 13:04:54 |
暇人さん、ryuさん、アドバイスありがとうございます。 今、それぞれテストしていますので 後程結果を投稿します。 ありがとうございます。 |
[5247] Re:テキストBOXの値の受け渡しについて |
投稿者:食事睡眠ありなみん?さん 2005/09/07 13:40:50 |
質問させて下さい。今、このような形でテストしています。 <<start.asp>> <table> <tr> <form name = "hoge" method="post"> <td>コード検索</td> <td><input type="text" name="hid"></td> <td><input type="button" value="検索実行" onClick=MakeChild(this) target="_blank" id=button1 name=button1></td> </tr> <tr> <td>場所検索</td> <td><input type="text" name="hbasyo"></td> <td><input type="button" value="検索実行" onClick=MakeChild(this) target="_blank" id=button2 name=button2></td> </form> </tr> </table> <<javaスクリプト>> function MakeChild() { window.document.hoge.method = "POST"; window.document.hoge.action = "child.asp"; window.document.hoge.submit(); window.open("child.asp","_blank","scrollbars=1"); } この状態でどちらの検索実行を実行しても値が渡せません。 また検索実行後、start.asp自体もchild.aspに変わってしまいます。 MakeChild()がいけないような気がしますが…。分かりません。 また、このhid、hbasyo以外の値を一緒に渡したい場合は どうしたら良いですか? MakeChild()をMakeChild(strA,strB)のように引数を加えて "child.asp?aaa=" + strA + "&bbb=" + strBとすればいい と思いましたが、 onClick=MakeChild(this)をどう記述することになるのでしょうか? onClick=MakeChild(this,"<%=strAAA%>","<%=strBBB%>")で良いのですか?? 未熟ですみません、アドバイスお願いします。 |
[5248] Re:テキストBOXの値の受け渡しについて |
投稿者:食事睡眠ありなみん?さん 2005/09/07 14:01:51 |
a hrefに関するテスト結果で質問させて下さい。 <<start.asp>> <table> <tr> <td><a href = ""javascript:MakeChild2()"">テストです</a></td> </tr> </table> <<javaスクリプト>> function MakeChild2() { window.open("child.asp?","","scrollbars=1"); } targetが余分だということでしたので上記のようにしました。 これで実行するとアドレスが http://localhost/iishelp/iis/misc/default.asp http://MyTestServer/localstart.asp という2つの画面が表示されてしまいました。 どうしてこうなってしまうのか…という感じです…。 何度もすみませんが、アドバイスをお願いします。 |
[5250] Re:テキストBOXの値の受け渡しについて |
投稿者:暇人さん 2005/09/07 15:11:49 |
今回のつっこみ所 > <td><a href = ""javascript:MakeChild2()"">テストです なんで""javascript:MakeChild2()""ってやってんの? "javascript:MakeChild2()"でしょ、これでは解析されないよ。 > a hrefに関するテスト結果で質問させて下さい。 > <<start.asp>> > <table> > <tr> > <td><a href = ""javascript:MakeChild2()"">テストです</a></td> > </tr> > </table> > > <<javaスクリプト>> > function MakeChild2() > { > window.open("child.asp?","","scrollbars=1"); > } > > targetが余分だということでしたので上記のようにしました。 > これで実行するとアドレスが > http://localhost/iishelp/iis/misc/default.asp > http://MyTestServer/localstart.asp > という2つの画面が表示されてしまいました。 > どうしてこうなってしまうのか…という感じです…。 > 何度もすみませんが、アドバイスをお願いします。 > |
[5249] Re:テキストBOXの値の受け渡しについて |
投稿者:ryuさん 2005/09/07 15:11:42 |
受けて側でRequest.Formでちゃんと変数に格納してますか? <%@ Language=VBScript%> <% dim AAA AAA= Request.Form("hid") %> で、必要な状態に展開してますでしょうか? >この状態でどちらの検索実行を実行しても値が渡せません。 あくまで例としてあげたものは、新規windowのオープンも行ってないですので、このままだと新規windowはオープンしません。 なので、改修するためのJSならってことでURLを載せたのですが、、、 >また検索実行後、start.asp自体もchild.aspに変わってしまいます。 >MakeChild()がいけないような気がしますが…。分かりません。 変数なら、一番最初に暇人さんが載せておられた方法で、aspの後ろに変数を付ければOKです。 テキストボックスなどの入力値を送るなら、同一フォームに(ボタンに対応したフォーム)にテキストボックスとかを追加していけばいいです。 >また、このhid、hbasyo以外の値を一緒に渡したい場合は >どうしたら良いですか? ちなみに、押下するボタンによって制御を変えるなら、ファンクション内でIF文を使って if (obj.name==○○) { 処理部分 } ってしないと認識しないですよ。 あと function MakeChild(obj)ってしないと、何のための引数だかわからないですよー |
[5251] Re:テキストBOXの値の受け渡しについて |
投稿者:暇人さん 2005/09/07 16:01:13 |
ryuさんのつっこみに補足します。 第一チェックポイント > <td><input type="button" value="検索実行" onClick=MakeChild(this) target="_blank" id=button1 name=button1></td> 1、HTMLの属性の値は"か'で囲むようにしましょう。 特にscriptの所は絶対に囲むようにしましょう。 空白とか入ることありますし、,とかも誤作動するし文字型定数値を入れようとして'a'とかを関数の引数に入れたらまた誤作動します。 つまり onClick=MakeChild(this) これは絶対駄目です。 onClick=MakeChild('a')とかやったらもうアウトですから。 ASPは動的にHTMLを吐き出すのが特徴です。 onClick="MakeChild('<%=strA%>')" とかよくやるので、動くからいいじゃん?なんていってると後で泣きをみます。 2、誤作動の原因になるから使わない(使えない)属性は使わないようにしましょう。 target="_blank" これはInputタグの属性にないですね。やめましょう。 第二チェックポイント > <<javaスクリプト>> > function MakeChild() > { > window.document.hoge.method = "POST"; > window.document.hoge.action = "child.asp"; > window.document.hoge.submit(); > window.open("child.asp","_blank","scrollbars=1"); > } ryuさんがつっこんでくれた所は省略します。 1、submitとopenの順番が逆です。openした先にsubmitするわけです。 2、以下例 function test(){ f = document.[フォーム名]; f.method = "post"; f.action = "child.asp"; //↓ウィンドウの名前は適当なものに変えて下さい window.open("about:blank","testdesu"); //↑初期値は空白にしてあります。 f.target = "testdesu"; f.submit(); } > 質問させて下さい。今、このような形でテストしています。 > > <<start.asp>> > <table> > <tr> > <form name = "hoge" method="post"> > <td>コード検索</td> > <td><input type="text" name="hid"></td> > <td><input type="button" value="検索実行" onClick=MakeChild(this) target="_blank" id=button1 name=button1></td> > </tr> > <tr> > <td>場所検索</td> > <td><input type="text" name="hbasyo"></td> > <td><input type="button" value="検索実行" onClick=MakeChild(this) target="_blank" id=button2 name=button2></td> > </form> > </tr> > </table> > > <<javaスクリプト>> > function MakeChild() > { > window.document.hoge.method = "POST"; > window.document.hoge.action = "child.asp"; > window.document.hoge.submit(); > window.open("child.asp","_blank","scrollbars=1"); > } > > この状態でどちらの検索実行を実行しても値が渡せません。 > また検索実行後、start.asp自体もchild.aspに変わってしまいます。 > MakeChild()がいけないような気がしますが…。分かりません。 > > また、このhid、hbasyo以外の値を一緒に渡したい場合は > どうしたら良いですか? > MakeChild()をMakeChild(strA,strB)のように引数を加えて > "child.asp?aaa=" + strA + "&bbb=" + strBとすればいい > と思いましたが、 > onClick=MakeChild(this)をどう記述することになるのでしょうか? > onClick=MakeChild(this,"<%=strAAA%>","<%=strBBB%>")で良いのですか?? > > 未熟ですみません、アドバイスお願いします。 > |
[5252] Re:テキストBOXの値の受け渡しについて |
投稿者:食事睡眠ありなみん?さん 2005/09/07 16:23:59 |
暇人さん、ryuさん、数々のつっこみありがとうございます!! 打たれ過ぎて体がぼろぼろです(^^;) 以下のように出来ました!! これで問題ないと思いますが…もしつっこみがあればお願いします! <<start.asp側>> <table> <tr> <form name = "hoge" method="post"> <td>コード検索</td> <td><input type="text" name="hid"></td> <td><input type="button" value="検索実行" onClick = "SearchCode('<%=aaa%>','<%=bbb%>')" target="_blank"></td> </tr> <tr> <td>場所検索</td> <td><input type="text" name="hbasyo"></td> <td><input type="button" value="検索実行" onClick="SearchBasyo('<%=aaa%>','<%=bbb%>')" target="_blank"></td> </form> </tr> </table> <script LANGUAGE="javascript"> <!-- /* コード検索処理 */ function SearchCode(aaa,bbb) { strUrl = "child.asp?aaa=" + aaa + "&bbb=" + bbb + "&hid="+unescape(document.hoge.hid.value); window.open(strUrl,"","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes"); } /* 場所検索処理 */ function SearchBasyo(aaa,bbb) { strUrl = "child.asp?aaa=" + aaa + "&bbb=" + bbb + "&hbasyo="+unescape(document.hoge.hbasyo.value); window.open(strUrl,"","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes"); } --> </script> <<child.asp側>> '検索条件:コード ID = request.querystring("hid") '検索条件:場所 Basyo = request.querystring("hbasyo") それぞれの検索条件の渡しとそれ以外の値の渡しも出来ました!! また、 <td><a href = ""javascript:MakeChild2()"">テストです も <td><a href = "javascript:MakeChild2()">テストです 修正したら動作しましたああああああ!!!(T0T) 暇人さん、ryuさん、ありがとうございます! 未熟な私を見捨てずに…ありがとうございました!! これからも投稿したいと思いますので びしばし突っ込んでください!! |
TreeBBS For ASP V.0.1.3 |