• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:[javascript]ホームページタグの書き換えとonclickについて)

[javascript]ホームページタグの書き換えとonclickについて

このQ&Aのポイント
  • javascriptを用いて、ホームページタグの書き換えやonclickの機能について質問があります。
  • 特に、送信ボタンをクリックした際に新しいウィンドウが開かれるが、その結果が反映されない問題と、URLの一部を毎回書き換えたい問題について解決方法を教えてください。
  • 分かる方のアドバイスをお待ちしております。

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

  • ベストアンサー
回答No.4

追加のご質問部分ですがいまいち仕様が不明なんですが・・ (1) 送信aなら、入力された文字列の頭にa.を付加する 送信bなら、入力された文字列の頭にb.を付加する (2) 送信abともに数字と同様に別の場所で入力した英文字xx とa.またはb.を合成しa.xxまたはb.xxとして送信する (この場合はa、bはボタンのみでいい感じがしますが・・) (3) 考えつかないのでご自分でこんな感じという ソースを提示してください・・ cgiの更新上の問題ですが、 説明不足ですいません、私のご提案させていただいたのは、 現状のスクリプトでは常にnewという名前のウィンドウに開くため、 既にaが実行中の場合にbを押してしまうと、同じnewのウィンドウ名で開こうとしますが すでに同名のウィンドウがあるため、そのウィンドウを再利用して開いてしまいます。 このため、実行中のaが中断されるという現象であるなら aの場合はnew_aというウィンドウ、bの場合はnew_bというウィンドウ というようにもともとa,bで使用するウィンドウを分けたら解決しないかな?ということです。 「ずらす」というのはnew_aが既に開いていれば、 new_bを開く時、top・leftの位置を少し下にずらして 別窓が開いた(2枚開いている)ことが判り易くするためです。 補足お願いします。 .

ayaka19801201
質問者

お礼

回答いただきありがとうございました! また、返信が遅くなり、スミマセン。 回答いただきました、ソースをいろいろいじっていて、無事思い通りの物を作成することができました。 本当に、ありがとうございました!!

すると、全ての回答が全文表示されます。

その他の回答 (3)

回答No.3

#2を少し書き換えました。 送信後のフォームに a.**** と残るのを消すようにし エラートラップにフォーカスを戻す記述を加えました。 <script language=javascript> function submitByNewWindow(frm,str){ var obj=document.forms[0].fig; if(obj.value==""||isNaN(obj.value)){ alert("数字を入力してください!!"); obj.value=""; obj.focus(); }else if(frm.elements["do"].value==""){ alert("英字を入力してください!!"); frm.elements["do"].value=""; frm.elements["do"].focus(); }else{ window.open('','new','width=500,height=400,left=0,top=0,scrollbars=yes'); frm.target = "new"; frm.action = "url.cgi?acc=" + obj.value; frm.elements["do"].value = str + frm.elements["do"].value; frm.submit(); obj.value=""; frm.elements["do"].value="" } } </script> <body> <form> 送信数字→  <input type="text" name="fig" value="" maxlength="3" style="width:30px;ime-mode:disabled;text-align:center;" /> </form> <form action="" method="post"> 英語送信→a. <input type="text" name="do" value="" /> <input type="hidden" name="type" value="other" /> <input type="button" onclick="submitByNewWindow(this.form,'a.')" value="送信 a" /> </form> <form action="" method="post"> 英語送信→b. <input type="text" name="do" value="" /> <input type="hidden" name="type" value="other" /> <input type="button" onclick="submitByNewWindow(this.form,'b.')" value="送信 b" /> </form> </body> もうひとつの問題ですが >同一の、ウィンドウに再度表示され、 >正常に受信終わる前に閉じた状態になるため、 >エラーになると思っています。 aとbと別ウィンドウを 位置をずらして開いたら解決しませんか? .

ayaka19801201
質問者

補足

回答いただきありがとうございます。 また、大幅な改良ありがとうございます! 説明不足ですみませんでした。 a.*** b.*** についてですが、 初めの部分で***の部分を指定すると、それを、すべてのところで適用して欲しいというものです。 ちょうど、送信数字が、すべてのフォームで適用されているように、はじめに、入力すれば、すべて同じようにしたいと考えています。 また、aとbをずらしたら解決するかということに対ですが、IEとFireFoxで試したところ残念ながらうまくいきませんでした。 FireFoxで異なるタブを手前にして、開くと新しいウィンドウを開いてくれてうまくいきましたが、かなり、手間なため、同じ場所に、違うウィンドウをどんどん開くような方法が可能でしたら助かります。

すると、全ての回答が全文表示されます。
回答No.2

順番に解決しましょうか・・ まず、追加の部分ですが <script language=javascript> function submitByNewWindow(frm,str){ var obj=document.forms[0].fig; if(obj.value==""||isNaN(obj.value)){ alert("数字を入力してください!!"); }else if(frm.elements["do"].value==""){ alert("英字を入力してください!!"); }else{ window.open('','new','width=500,height=400,left=0,top=0,scrollbars=yes'); frm.target = "new"; frm.action = "url.cgi?acc=" + document.forms[0].fig.value; frm.elements["do"].value = str + frm.elements["do"].value; frm.submit(); } } </script> <body> <form> 送信数字→  <input type="text" name="fig" value="" maxlength="3" style="width:30px;ime-mode:disabled;text-align:center;" /> </form> <form action="" method="post"> 英語送信→a. <input type="text" name="do" value="" /> <input type="hidden" name="type" value="other" /> <input type="button" onclick="submitByNewWindow(this.form,'a.')" value="送信 a" /> </form> <form action="" method="post"> 英語送信→b. <input type="text" name="do" value="" /> <input type="hidden" name="type" value="other" /> <input type="button" onclick="submitByNewWindow(this.form,'b.')" value="送信 b" /> </form> </body> 上記のようでよろしいでしょうか? 送信内容は a.**** または b.**** と hidden の other なります。 .

すると、全ての回答が全文表示されます。
回答No.1

actionの書換えは以下のような感じかと・・ <script language=javascript> function submitByNewWindow(frm) { window.open('','new','width=500,height=400,left=0,top=0,scrollbars=yes'); frm.target = "new"; frm.action="url.cgi?acc="+document.forms[0].fig.value; frm.submit(); } </script> <form> 送信数字→<input type="text" name="fig" value="" /><BR> </form> <form action="" method="post"> <input type="text" name="do" value="a" /> <input type="hidden" name="type" value="other" /> <input type="button" onclick="submitByNewWindow(this.form);" value="送信a";> </form> <form action="" method="post"> <input type="text" name="do" value="b" /> <input type="hidden" name="type" value="other" /> <input type="button" onclick="submitByNewWindow(this.form);" value="送信b";> </form> ただ、 >送信aを、 >実行すると、新しいウィンドウが開きます。 >そして、相手からの受信を待たず、 >送信b >を実行すると、 >送信aの結果が反映されないことがよくあります。 >同一の、ウィンドウに再度表示され、正常に受信終>わる前に閉じた状態になるため、エラーになると思>っています。 この部分がよくわかりません。 新規画面に何か送信内容を表示するのでしょうか? .

ayaka19801201
質問者

補足

回答いただきありがとうございます。 早速試してみました。 actionにつなぐ部分は、ばっちり、動作いたしました。 感激です。ありがとうございます! >この部分がよくわかりません。 >新規画面に何か送信内容を表示するのでしょうか? >>> 新規に作成される画面に、表示させます。 送信aであれば、送信aの内容は正常に受信されました。 送信bであれば、送信bの内容は正常に受信されました。 という具合です。 そのため、この画面が現れる前に画面を閉じると、通信が途中で遮断された? もしくは、単に、送信されなかった? いずれにしても、正常に、記録されないことがあります。 そのため、新しい画面に表示結果を出したいわけです。 同一の画面だと、送信aの結果を表示する前に、送信bの当たらしい、ウィンドウが上書きされてしまい正常に動作しない可能性があるためです。 また、大変申し訳ないのですが、actionを教えていただければ自分でできるかと思っていたのですが、できそうにないので、下記も、分かりましたら、宜しくお願い致します。 一つ目の内容 <input type="text" name="do" value="a" /> 二つ目の内容 <input type="text" name="do" value="b" /> ですが、実際には、 <input type="text" name="do" value="a.H.K" /> <input type="text" name="do" value="b.H.K" /> という風にしたく思っています。 H.Kという部分が数字の送信と同様に任意に書き換えができるもの。 英語送信→<input type="text" name="do?" value="" /><BR><1234を入れると上記のようになるようしたい。

すると、全ての回答が全文表示されます。

関連するQ&A