【JavaScript】


<script language="javascript">
<!--
function other_action(form,action_name){
document.form.action.value = action_name;
}
//-->
</script>


<form method="post" name="form" action="index.php">

(略)

<input type="hidden" name="action" value="Form_Forward" />
<input type="submit" value="修正する" onclick="other_action(form, 'Form_Back');"> <input type="submit" value="送信する" />


━─━─━─━─━─━─━─━─━─━─━─━

上記の場合、
<form method="post" name="form" action="index.php">
に、name="form"と記述しなければ、JavaScript側で処理できないと思うのですが、
<formの属性のnameを記述しなくても、
onclick="other_action(form, 'Form_Back');
でformをthisにして、JavaScript側でどこの場所から呼び出されたのか分からせる方法がありそうなのですが、
自分では分かりませんでした。

ご存じの方、よろしくお願いいたします。

回答の条件
  • 1人5回まで
  • 登録:2007/06/21 11:42:41
  • 終了:2007/06/28 11:45:03

回答(3件)

id:Yota No.1

Yota回答回数453ベストアンサー獲得回数282007/06/21 12:43:13

ポイント27pt

<input onclick="this.form.name" >

<input onclick="this.form.action.value" >

などで確認すればいいのではないでしょうか。

id:keijiro

すみません。

あまり、JavaScriptに詳しくないので、

もう少し分かりやすく書いていただけますと幸いです。

2007/06/21 13:24:24
id:KirakiraHikaru No.2

KirakiraHikaru回答回数354ベストアンサー獲得回数682007/06/21 14:45:00

ポイント27pt

thisは、それを記述したオブジェクト自身をあらわします。

ですので、下記のようにinput type"submit"内にthisと記述した場合、

thisはそのsubmitボタン自身をあらわしています。

このsubmitボタンはform内のオブジェクトなので、

this.parentElementとすると、formを参照することができます。

<input type="submit" value="修正する" onclick="other_action(this.parentElement, 'Form_Back');">

複数のフォームがある場合にもthis.parentElementとしておけば、

押されたボタンの親であるフォームを関数に渡すことができます。


また、thisを使う以外には、

単純にdocument.forms[0]を使って名前の無いフォームにアクセスすることができます。

<input type="submit" value="修正する" onclick="other_action(document.forms[0], 'Form_Back');">

forms[0]の0の部分はフォームの順序を指定します。

(0始まり)

複数のフォームがある場合に、2個目のフォームを指定する場合はforms[1]です。

id:keijiro

ありがとうございます。

試してみます。

2007/06/22 22:09:44
id:Yota No.3

Yota回答回数453ベストアンサー獲得回数282007/06/21 14:51:11

ポイント26pt

ちょっとしょぼかったですか。

たとえば、下のようにformオブジェクトをthis.formでつかまえられるのでそこからどのformか特定できると考えたわけです。

<form method="post" name="form1" action="hoge" >

<input type="text" name="input1" />

<input type="button" onclick="func(this.form.name);" name="input2" />

<form>

<script type="text/javascript" >

function func(val) {

alert(val) ;

}

</script>

引数の例

func(this.form.name)のとき、'form1'

func(this.form.action)のとき、'hoge'

func(this.form.input1.value)のとき、input1の中身

func(this.form.elements[0].name)のとき、'input1'

id:keijiro

ありがとうございます。

試してみます。

2007/06/22 22:10:02
  • id:KirakiraHikaru
    追記です。
    other_action関数の処理で、
    document.form.action.value = action_name;
    としているところは、
    form.action.value = action_name;
    としてください。
    document.formとしてしまうと、other_actionの引数のformでなくdocument内のname="form"を参照していることになります。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません