プロが教える店舗&オフィスのセキュリティ対策術

javascript部分
function sendform(formname){
document.formname.submit();
}

html部分
<form action="test.html" method="post" name="form1">
<input type="text" name="textvalue" value="1">
</form>
<a href="javascript:void(0)" onclick="sendform('form1'); return false;">click1</a>

<form action="test.html" method="post" name="form2">
<input type="text" name="textvalue" value="2">
</form>
<a href="javascript:void(0)" onclick="sendform('form2'); return false;">click2</a>


今は、上記のように書いています。引数でフォーム名を渡し、その値によって送信フォームを変えたいのですがうまくいきません。if文を使って
if(formmei=="form1"){
document.form1.submit();
}else if(formmei=="form1"){
document.form2.submit();
}
という方法も考えたのですが、フォーム名だけ変えることができないかと考えています。

よろしくお願いします。

A 回答 (6件)

それぞれのformに対応してクリック箇所があるなら、form内にsubmitボタンを設置する普通の方法でなんら問題がないと思いますけど…?



とりあえず、こんな感じ?
function sendform(formname){
document.forms[formname].submit();
}
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

シンプルですが、自分が考えていたものと合致します。
ありがとうございました。

お礼日時:2009/12/18 11:34

> form変数というのは、<form>~</form>内のOnclickイベントでのみ使えるものということでよろしいでしょうか?



正確には、 onclick には限らないと思います。 onkey* とか。

私の場合、必要な局面で使えなかった事が無くて、「正確にはどこで使えるか」は気にした事がありません。

例えば、formタグに無関係なタグでは formオブジェクトが欲しいケースはあまり無いでしょう。

また、 <form>~</form> 外ではどの formタグが欲しいか自明では無いので、あっても不安ですね。
    • good
    • 0

onclick="sendform('form2'); return false;" ⇒ onclick="sendform(form); return false;"



にして、

function sendform(formObj){
formObj.submit();
}

とするとどうですか?

form という変数は onclick 中だけで使える「用意された変数」で、その INPUTタグを含む FORMタグのオブジェクトです。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

form変数というのは、<form>~</form>内のOnclickイベントでのみ使えるものということでよろしいでしょうか?

お礼日時:2009/12/18 11:52

たとえば、アンカーのテキストがclick1かclick2だったときに


直前のフォームをサブミットするとかどうでしょう?

<script>
try{
document.addEventListener ('click',function(e){clickFunc(e)},true);
}catch(e){
document.attachEvent('onclick',function(e){clickFunc(e)});
}
function clickFunc(e){
var t = (e.srcElement || e.target);
if(t.nodeName=="A"){
if(t.childNodes[0].nodeValue.match(/^(click1|click2)$/)){
var n=t.previousSibling;
while(n){
if(n.nodeName=="FORM") break;
n=n.previousSibling;
}
n.submit();
}
}
e.preventDefault();
}
</script>
<form action="test.html">
<input type="text" name="textvalue" value="1">
</form>
<a href="#">click1</a>
<form action="test.html">
<input type="text" name="textvalue" value="2">
</form>
<a href="#">click2</a>
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

clickイベントが起きた時に、直前のフォームを送信するということでしょうか。勉強になりました。

お礼日時:2009/12/18 11:46

#1 です



No2様の方がベターです。
    • good
    • 0

下記でどうでしょう?



function sendform(formname){
tmp = eval("document." + formname);
tmp.submit();
}
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

eval関数は他にもいろいろ使えそうですね。

お礼日時:2009/12/18 11:32

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!