人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

【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側でどこの場所から呼び出されたのか分からせる方法がありそうなのですが、
自分では分かりませんでした。

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

●質問者: PEPOTA
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:JavaScript name 属性 記述
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● Yota
●27ポイント

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

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

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

◎質問者からの返答

すみません。

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

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


2 ● KirakiraHikaru
●27ポイント

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]です。

◎質問者からの返答

ありがとうございます。

試してみます。


3 ● Yota
●26ポイント

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

たとえば、下のように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'

◎質問者からの返答

ありがとうございます。

試してみます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ