- ベストアンサー
submit()について
突然ですがアドバイスをお願いいたします。 <SCRIPT LANGUAGE="JavaScript"> <!-- function aSubmit(){ document.Form1.action='xxxxx'; document.Form1.aaaaa.submit(); } --> </SCRIPT> これで“Form1”内のNAMEが“aaaaa”とついた フォームの値を送信できますよね、 ここで質問なのですが、 例えばNAMEが“aaaaa”のフォームの他に NAMEが“bbbbb”というフォームがあったとして、 “aaaaa”と“bbbbb”の値を同時に送信したいときには、 <SCRIPT LANGUAGE="JavaScript"> <!-- function aSubmit(){ document.Form1.action='xxxxx'; document.Form1.('aaaaa,bbbbb').submit(); } --> </SCRIPT> とこんな書き方でも大丈夫なのでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
No.2の方が書いていらっしゃるDISABLEDプロパティの方は、HTML4.01の仕様的にも、満足なFORM部品として扱わないとされていますので、送信されることはないでしょう。(試していないので、IEの実装ミスで送信されてしまうかもしれませんが。) これに対応していないNetscape4.xに関してですが、taint()メソッドはよく存じませんけど、なんとなく、 Description Tainting prevents other scripts from passing information that should be secure and private, such as directory structures or user session history. JavaScript cannot pass tainted values on to any server without the end user's permission. を読む限りでは、「ユーザの許可なくして送信できない」→許可すれば送信される で、なにか違うように思えるんですよね。 現状で現実的なのは、やっぱりhiddenばかりの送信用Form要素を作っておいて、送信するときは、表示用のFormの中の送信したい名前・値のセットをそっちにコピーしてそれをsubmitする、って方法なのかな?
その他の回答 (2)
- makokoko
- ベストアンサー率50% (7/14)
ネットスケープならばデータテイント機能を使って、データの送受信を制御できます。 フォーム内にある特定のエレメントを送信したくない時は untaint(document.フォーム名.フィールド名); 送信可能にする時は taint(document.フォーム名.フィールド名); とJavScript内で記述すればOKだと思います。 以上はネットスケープのみの記述方法です。 IEはDISABLEDプロパティを操作することで、同じ制御をすることができるので、 JavaScriptはクロスブラウザな書き方をしないといけないと思います。 でも、データテイント機能はそのままじゃ使えないかもなぁ~
お礼
回答ありがとうございます。 >JavaScriptはクロスブラウザな書き方をしないといけないと思います。 はい。ほんとですね。 私もできればクロスブラウザで行ってみたいと思っています。
- sight
- ベストアンサー率53% (199/370)
>これで“Form1”内のNAMEが“aaaaa”とついたフォームの値を送信できますよね、 できますか?? Form1って、フォームオブジェクトですよね? submit()はフォームオブジェクトに対しておこなわれますから、 >document.Form1.aaaaa.submit(); という書き方はおかしくないですか? document.Form1.submit(); と書くべきでしょう。 ですから、そもそも >document.Form1.('aaaaa,bbbbb').submit(); という書き方が可か、不可か、という以前の問題だと思いますが。 もし、aaaaaやbbbbbもForm1と同列のフォームオブジェクトであるという前提ならば →フォームは階層構造にできませんので、Form1の中にaaaaaなどというフォームは入れられません もし、aaaaaやbbbbbは、フォーム(Form1)に内包される要素だという前提ならば →From1.submit()をした時点で、Form1に内包されるすべてのForm要素が送信されるので、「“aaaaa”と“bbbbb”の値を同時に送信したいときには」という疑問は不要です。常に同時に送信されます。
お礼
sightさん回答ありがとうございます。 だめですか…。結構自信あったんですけど…。 >常に同時に送信されます。 はい。そうなんですけど、どうしてもたくさんある フォームの全部の値を送信するのではなく、 送りたいものだけ送信しようと試みたのです。 もう一度見直してみたいとおもいます。 ありがとうございました!
補足
sightさん、いつもお世話になっております。 一ヶ月ほど前にも同じ様な愚問に 回答していただいた者です。 前回のはおかげさまで何とかクリアできました。 そしてまた愚問! ほんと勉強が全然進展してません…。
お礼
回答ありがとうございます。 >現状で現実的なのは、やっぱりhiddenばかりの送信用Form要素を作っておいて… やっぱりそれが無難でしょうか。 その方法なら何とか出来そうです。 ちょっと複雑ですけど確実ですよね。