2012年2月23日

Javascriptでformを作成してsubmitする方法

JavaScript内でformを動的に生成して、submitする方法のメモ
よく分からずにちょっとはまってしまいました。
書いてて思ったけど、このご時勢にわざわざページ遷移させる必要があるのか、とか
jsでformを作らないといけない理由は何だ?とか思ったけどどっかで需要もあるでしょう

ということで、たとえば
input id="submit" type="button" value="送信ボタン" />

なんていうのをHTML側に書いて、このボタンを押したら動的にJSでパラメータを作ってsubmitするとします。

JS側で
var frm = document.createElement("form");
var ipt1 = document.createElement("input");
frm.action = "js_submit2.php"; frm.method = "post";
ipt1.name = "val1"; ipt1.value = "111111"; frm.appendChild(ipt1); frm.submit();

なんていうコードを書いて実行したところ、Chromeさんでは上手くいきました。
ばんざい!おしまい!
としたかったのですが、どうもFirefoxで動いていない模様。

いろいろネットで情報を集めてるうちに
Firefoxはbody要素をきっちり指定してやらないと、formが効かないらしい
ということのようです

ということで、frmをsubmitする前に
document.body.appendChild(frm);
を追加してやります。

frm.appendChild(ipt1);
document.body.appendChild(frm);
frm.submit();

こうすると、Firefoxでもちゃんと動きました。
Chromeが賢いのか、Firefoxがきっちりしてるのか。
ちなみにIEや他のでは見ていません。あしからず。

0 件のコメント:

コメントを投稿