web-dev-qa-db-ja.com

this.form.submit()がフォームのdiv要素をクリックした後に機能しない

マウスクリックを使用してフォームの送信をテストしようとしましたが、フォームがVanilla JavaScriptで送信されないようです。

私はこの単純なマークアップとコードを使用しています:

_<form name="form" id="price" action="" method="post">
<div class="category" name="price" value="50 dollars" 
onClick="this.form.submit();"
>price</div>

</form>

<?php
echo $_POST['price'];

?>
_

Jqueryでフォームを送信できますが、this.form.submit()がVanilla javascriptで機能しない理由がわかりません。これをテストするためにChromeを使用しています。

8
user701510

divはフォーム要素ではありません。そのための_this.form_はありません。

_.form_があるため、document.forms.form.submit()(_name="form"_を実行できます)

19
David Hedlund

次のようなコードを試した場合、コードが機能する可能性があります。

onClick="document.forms["price"].submit();"

あなたの場合のthisは、実際にはdivタグを参照し、フォーム自体への参照を含むドキュメントオブジェクトを参照しません。

4
buruzaemon

フォーム名が「filter-form」の場合は、次のコードを使用します

onclick="return document.forms.filter-form.submit();"
1
user2629584

divはフォーム要素ではありません(したがって.formプロパティ)も値もありません。あなたが欲しかったと思います<input> の代わりに <div>

0
ThiefMaster

これは古い質問ですが、これはうまくいくはずです

onclick="this.parentNode.form.submit()"
0
Monarch Wadia