- PR -

form acition の切り替え

1
投稿者投稿内容
progman
大ベテラン
会議室デビュー日: 2005/06/08
投稿数: 227
投稿日時: 2007-07-18 10:55
動的に飛び先のURLを変更したい要件があり、javascriptでaction の書き換えをおこ
なって変更しいています。

IE6ではOKなのですが、mozilla 1.5.0.12 ではコケてしまいます。

// ブラウザで送信されたHTMLのformの内容
<form name="LinkinsertappName.do" action="insertappName.do" method="post"
onSubmit="buttonOff(); return true;">
<input type="hidden" name="SENDACTION"/>
<input type="hidden" name="sessionId" value="x2aa2yHd+D5m7GcPzE7We0"/>
<input type="submit" name="btnNew" onClick="SENDACTION.name='action_New'" value="登録画面へ"/>
</form>


// 実行されるjavascript
document.forms[fnm].name = "action_Update:" + pkeyname + ":" + ret;
document.forms[fnm].action = "update" + idl + ".do"; // ここでコケル
document.forms[fnm].elements['SENDACTION'].name =
"action_Update:" + pkeyname + ":" + ret;
document.forms[fnm].elements[pkeyname].value = ret;

mozillaのfirebugでみると
document.forms[fnm] has no properties
となっています。

これはなにかやり方がまずいのか、または根本的にサポートされないのでしょうか?
なにか回避策はないでしょうか?

ターゲットの環境は特定されていないのですが、今テスト実行しているのは
XP Pro SP2です。
冬寂
ぬし
会議室デビュー日: 2002/09/17
投稿数: 449
投稿日時: 2007-07-18 11:13
コード:
document.forms[fnm].name = "action_Update:" + pkeyname + ":" + ret; 
// ^ nameを変えてしまっているからdocument.forms[fnm]は存在しなくなる
document.forms[fnm].action = "update" + idl + ".do"; // ここでコケル 


もう少し、プログラムの意味を考えながらコーディングする癖をつけるといいかもしれません。
progman
大ベテラン
会議室デビュー日: 2005/06/08
投稿数: 227
投稿日時: 2007-07-18 11:44
ありがとうございます。


var uform = document.forms[fnm];
uform.action = "update" + idl + ".do";
uform.elements['SENDACTION'].name =
"action_Update:" + pkeyname + ":" + ret;
uform.elements[pkeyname].value = ret;
uform.name = "action_Update:" + pkeyname + ":" + ret;

として、うまくいきました。
1

スキルアップ/キャリアアップ(JOB@IT)