どうしても、うまくいかない部分が2点ありますので分かる方、手直ししていただけないでしょうか?
さまざまなHPを参考にして、下記、ソースを作成しました。
送信aを、
実行すると、新しいウィンドウが開きます。
そして、相手からの受信を待たず、
送信b
を実行すると、
送信aの結果が反映されないことがよくあります。
同一の、ウィンドウに再度表示され、正常に受信終わる前に閉じた状態になるため、エラーになると思っています。
そこで、これを何とか、克服する方法はないものでしょうか?
また、javascriptを用いて、
<form action="url.cgi?acc=■" method="post">
の■の部分を、毎回好きな数字に書き換えたいのですが何か、よい方法はないものでしょうか?
以上2点ありますが、分かる方のみでもとても助かりますので、手直しのほど、何卒、宜しくお願い致します。
<script language=javascript>
function submitByNewWindow(frm) {
window.open('','new','width=500,height=400,left=0,top=0,scrollbars=yes');
frm.target = "new";
frm.submit();
}
</script>
■へ入れる文字→[ ] <BR>
<form action="url.cgi?acc=■" 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="url.cgi?acc=■" 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>
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枚開いている)ことが判り易くするためです。
補足お願いします。
.
回答いただきありがとうございました!
また、返信が遅くなり、スミマセン。
回答いただきました、ソースをいろいろいじっていて、無事思い通りの物を作成することができました。
本当に、ありがとうございました!!
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と別ウィンドウを
位置をずらして開いたら解決しませんか?
.
この回答への補足
回答いただきありがとうございます。
また、大幅な改良ありがとうございます!
説明不足ですみませんでした。
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の結果が反映されないことがよくあります。
>同一の、ウィンドウに再度表示され、正常に受信終>わる前に閉じた状態になるため、エラーになると思>っています。
この部分がよくわかりません。
新規画面に何か送信内容を表示するのでしょうか?
.
この回答への補足
回答いただきありがとうございます。
早速試してみました。
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が見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- HTML・CSS 私の能力からして間違っていないような気がします。 4 2022/09/30 13:24
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- HTML・CSS ただいま勉強始めたての初心者です。フォームを縦並べにしたいです。 2 2022/11/20 17:18
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
テキストボックスに任意のURLを...
-
inputボックスでのファイル選択...
-
this.formがundefined
-
input type="image"の時、enter...
-
複数Formから値を取得するやりかた
-
Chromeの document.getElementB...
-
リンク先アドレスの一部にテキ...
-
chromeでフォームの値が取得で...
-
javascriptでASPにデータを渡す
-
【FORM】 リンク文字で submit...
-
複数のフォームを一括で自動送...
-
添付ファイルの未選択チェック方法
-
iframe内のformをサブミットす...
-
javaScriptの変数をJavaの変数...
-
特定<table>内の<td>の色を変える
-
フォームの内容でリンク先URLの...
-
WWW::Mechanizeについて教えて...
-
Javascriptで自動的に計算する...
-
onchangeイベントを強制的に発...
-
画面表示とともに、テーブルの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
submitした値を返したい
-
複数のフォームを一括で自動送...
-
iframe内のformをサブミットす...
-
別ウィンドウへのsubmitの挙動...
-
1つのページにformを2つ設置。2...
-
フォームが空欄の時にフォーム...
-
javascriptでASPにデータを渡す
-
Cookieに保存されない
-
POST時に要素を削除してからPOST
-
focus()が上手くいかない
-
submitボタン押下後、disabled...
-
1つのform内に2つのsubmitボタ...
-
FormのonsubmitでJavaスクリプ...
-
テキストエリアに入力したURLに...
-
C# 配列などの受け渡し
-
タブキーでなくエンターキーで...
-
ENTERキーを無効にしたいのです...
-
formのsubmitイベントの発生に...
-
別窓ウィンドウから親ウィンド...
-
1つのformで複数のactionをボタ...
おすすめ情報