同じFORM内にボタンが複数配置してあり、遷移先の振り分けを行うのに、javascriptで分岐させ、それぞれのactionを設定しています。
上記の方法で、なぜかIEforMacだけ動作がおかしくなります。その他のブラウザは問題ありません。
一度actionが実行されると、そのactionが実行されたFORM内のどのobjectをクリックしてもactionは実行されてしまうのです。
objectというのは、text項目やgif含めすべてです。
一番の問題はtextにカーソルを当てただけで、actionが実行されてしまうので入力ができないということです。
ただ、actionを実行したあと、リロードを行うと、この動作はクリアされるようです。
いろいろ調べた結果、FORMタグにactionを記述すると問題なく動作するのですが、JSでactionを指定すると、問題の動作になるようです。
これは、actionがFORM内にひとつしかなくても同じでした。
1つしかない場合は、FORM内に直に記述するように修正したのですが、どうしてもactionの振り分けが必要な部分があるので、困っています。
同じような経験をお持ちの方、どうぞご教授願います。
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
情報が少ないので状況がちょっと解らないのですが、
少なくとも、私の環境で試したところ、何も問題はありませんでした。
やはり他の部分が原因、あるいは下にも書きましたがイベントバブルも確認してはどうでしょうか。
ありがとうございます。
MacのIE5.2なんですけど、同じ環境で起きないですか?
下の方が参考に掲載していただいたソースでも起きてしまいます。
私はもうIEのバグなんだと思い初めてるのですが・・・
同じ環境で起きないとなるとやっぱり書き方なのでしょうか、でもなぜこのブラウザだけ問題なのでしょう。いつもMac環境のブラウザには悩まされます。
No.4
- 回答日時:
formの内容(formタグだけでなく <form> から </form> まで)と、イベントプロシージャだけでも掲載してもらえると状況が解ると思うのですが、
とりあえず質問文などから推測できる範囲では、イベントバブルと実行のタイミングに原因があるように思えます。
まず、「actionが実行される」と書かれていますが、実際のところactionは属性ですから実行されるものではありません。
●formのaction属性を書き換える
●formをsubmitさせる
の2つを混同していませんか?
それと、ANo.1の捕捉欄に書かれているコードですが、上記2つの処理を続けて行っています。
もしこのコードをエレメントのイベントハンドラにバインドさせていたら、質問文にあるように、イベントが発生するたびにformがsubmitされてしまいます。どのエレメントにバインドさせていますか?(onclickを書いているタグ)
また、form自体のイベントハンドラにバインドさせていたら、その中のエレメントのイベントが、そのままformのイベントプロシージャに渡され、それで、formの中のすべてが反応してしまっている、ということではないでしょうか。
また、そもそものご希望の動作が少々よく解らないのですが、
・form内に複数のボタンがある
・各ボタンがクリックされた際に、それぞれ決められたURIにformをPOSTさせたい
と理解していいでしょうか。
> actionがFORM内にひとつしかなくても同じでした。
上記については意味が解りませんでした…。
普通、1つのformには1つのactionしか書けないはずですが…。
いずれにしても、やはり情報が少なすぎますので、コードを掲載すれば回答が得られやすいと思います。
この回答への補足
すみません。まとめて皆様の意見、まとめて補足させていただきます。
FORM内にactionが1つまたは複数というのは、submitするボタンが1つか複数あると意味です。
1つのパターンとして、FORM内にPOPUP画面を表示させるボタンが複数あり、その入力値をOPENERに戻す。
POPUP画面を呼ぶのにopener側でsubmitさせてるのには、入力値をいったん保存させるために必要だからです。なので、ボタンによってactionを引数で渡しsubmitさせるfunctionを呼んでいます。イベントは各ボタンのonClick()です。
2つ目のパターンはFORM内にボタンが1つしかない場合ですが、上記と同じやり方で、ボタンのonClickでsubmitのfunctionを呼んでいます。この場合、actionは引数ではなく、直書きです。これはPOPUP画面ではなく、同画面での画面遷移です。
上記2パターンとも、FORMタグにactionを記述すると問題の動作が起こりません。
2つ目の場合は、振り分けの必要がないのでFORMタグにactionを記述する方法に変えました。
本日はソースが手元にないため掲載できませんが、明日にでも掲載したいと思います。
情報が少ないところ、いろいろ情報をいただきありがとうございます。
No.3
- 回答日時:
>FORM内のどのobjectをクリックしてもactionは実行されてしまう。
>actionがFORM内にひとつしかなくても同じでした。
上記の原因はわかりません。
inputのtypeはsubmitではなくbuttonとし、onClickの関数に引数を渡してあげるのがポイントかなと。
<script type="text/javascript">
function movePages($pnum) {
if($pnum){
alert(document.form1.txt1.value);
if($pnum==1){
document.form1.action = "new.html";
} else if($pnum==2){
document.form1.action = "new2.html";
}
document.form1.target= "newPage";
document.form1.submit();
}
}
</script>
<form method="POST" name="form1">
<!--このtextのonClickは実験です //-->
<input type="text" name="txt1" onClick="javascript:movePages(1);return false">
<img src="a.bmp">
<input type="button" value="p1" onClick="javascript:movePages(1);return false">
<input type="button" value="p2" onClick="javascript:movePages(2);return false">
</form>
この回答への補足
以下に画面内次ページに遷移するときのソースを記載します。
動作としては、いくつかの入力項目に入力し、ボタン押下でsubmit、javascriptで入力チェックを行い、OKであれば次画面へ遷移する。
問題の動作は次画面から、ブラウザの「戻る」ボタンで戻った時に起こり、入力項目にカーソルを当てると、次画面へ遷移してしまいます。
各入力項目は普通のtext項目でイベントなどの処理はありません。
<form method="post" name="frmEx" onSubmit="return setCond();" >
--入力項目がいくつか入ります--
<input type="submit" value="登録する">
同HTML内に以下のjavascriptを記述
function setCond(){
--いくつかの入力チェックが入ります
エラーの場合はreturn falseを戻す--
document.frmEx.method= "post";
document.frmEx.action = "nextPage.html";
document.frmEx.target="_self";
return true;
}
皆様の返答にまとめて補足させていただいて済みません。よろしくお願いいします。
参考になるソースありがとうございます。
上記のソースをコピーして試してみましたが、やはり問題の現象が起きました。
p1のボタンを押下し、new.htmlが開いた後に、もとの画面のtxt1にカーソルを当てただけで、new.htmlが呼び出されてしまいます。
キャッシュをクリアしても同じで、もとの画面をリロードするまで現象は続きます。
No.2
- 回答日時:
#1>補足の内容からは、質問文の状況はよくわかりません。
(フォーム内のテキストや画像をクリックしただけでsubmitされるとか、多分onclickを書いている場所が悪いのではないかと思うけど)がactionを設定したなら、問題が起こらないということであれば、
<form name="form1" action="~.html" …>
とした上で、
document.form1.action="new.html";
の様に振り分け先をそれぞれ設定すればいいような気がします。
ありがとうございます。
formタグとjsのactionに同じ内容を記述し、試しましたが、だめでした。
jsの方をコメントアウトすればうまく行ったのですが。
No.1
- 回答日時:
Formの部分と、Scriptの部分を補足で挙げてもらえませんか?
この回答への補足
以下の処理は、POPUPでnewPageを作成し、そこに分岐で選択されたurlを表示させるというものです。
問題の動作はPOPUPや、画面遷移関係なく起こります。
以下の記述で実行すると問題が起こります。
<form method="post" name="form1" >
document.form1.method= "post";
document.form1.action = "new.html";
document.form1.target= "newPage";
document.form1.submit();
上記を以下に書き換えると問題が起こりません。
<form method="post" name="form1" action="new.html">
document.form1.method= "post";
document.form1.target= "newPage";
document.form1.submit();
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- JavaScript Google reCAPTCHAについて 1 2023/02/22 14:37
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
- HTML・CSS ただいま勉強始めたての初心者です。フォームを縦並べにしたいです。 2 2022/11/20 17:18
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript javascriptで入力フォームが空欄の時にアラートによるエラーを出すコードを書いています。 2 2023/06/13 17:58
- HTML・CSS 私の能力からして間違っていないような気がします。 4 2022/09/30 13:24
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
javascriptでASPにデータを渡す
-
enterキーでのtab移動
-
onclickでリストボックスを複数...
-
focus()が上手くいかない
-
POST時に要素を削除してからPOST
-
FormのonsubmitでJavaスクリプ...
-
ページを再読み込み後、再読み...
-
複数のフォームを一括で自動送...
-
1つのformで複数のactionをボタ...
-
タブキーでなくエンターキーで...
-
1つのform内に2つのsubmitボタ...
-
Cookieに保存されない
-
指定したタグを書き換えるには?
-
javascriptで取得した値をテキ...
-
どうしてもうまく動作しません!!
-
return trueとreturn falseの用...
-
プルダウン 項目が多いので先頭...
-
submitボタン押下時にPOSTされ...
-
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をボタ...
おすすめ情報