選択といくつかのテキスト入力を持つフォームがあります。選択が変更されたときにフォームを送信したいのですが。これは、次を使用して正常に機能します。
_onchange="this.form.submit()"
_
ただし、フォームに送信ボタンも含まれている場合、選択が変更されてもフォームは送信されません。ある種の対立を推測しています。
ここで私のオプションは何ですか?
代わりに$(this.form).trigger("submit")
のようなものを使用すべきですか?
次のようなものを使用できるはずです。
$('#selectElementId').change(
function(){
$(this).closest('form').trigger('submit');
/* or:
$('#formElementId').trigger('submit');
or:
$('#formElementId').submit();
*/
});
私のサイキックデバッグスキルは、送信ボタンの名前がsubmit
であることを教えてくれます。
したがって、form.submit
は、メソッドではなくボタンを指します。
ボタンの名前を別の名前に変更して、form.submit
は再びメソッドを参照します。
JQueryを使用している場合、次のように簡単です。
$('#mySelect').change(function()
{
$('#myForm').submit();
});
これを完了するにはいくつかの方法があります。
要素はどのフォームに属しているかを知っているので、jqueryでthis
をラップする必要はなく、フォーム要素を返す_this.form
_を呼び出すだけです。次に、フォーム要素でsubmit()
を呼び出して送信できます。
_ $('select').on('change', function(e){
this.form.submit()
});
_
ドキュメント: https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement
つかいます :
<select onchange="myFunction()">
function myFunction() {
document.querySelectorAll("input[type=submit]")[0].click();
}
JQueryを使用してそれらをバインドし、jQueryで処理します: http://jsfiddle.net/ZmxpW/ 。
$('select').change(function() {
$(this).parents('form').submit();
});