ユーザーがラベルをクリックするとすぐに、javascript で送信するフォームがあります。データが投稿されない奇妙な動作があります。しかし、フォームを遅延して (遅延が 0 であっても) 送信すると、機能します。
html は次のとおりです。
<form action="/other-page" method="post">
<input id="val-1" type="checkbox" name="filter[]" value="1">
<label for="val-1">Value 1</label>
<input id="val-2" type="checkbox" name="filter[]" value="2">
<label for="val-2">Value 2</label>
</form>
スクリプト:
<script>
$('label').click(function() {
var form = $(this).closest('form')
// if I use the following line the values won't be set
form.submit()
// If I use a `setTimeout` it works, even with a delay of 0
setTimeout(function() {
form.submit()
}, 0)
})
</script>
でこれを機能させることができるので大きな問題ではありませんが、setTimeout
これを 0 の遅延で書くのは本当に醜いです。ブラウザのバグについて考えましたが、Chrome と Firefox でテストしたところ、同じ結果が得られました。
何が起こっているかについて何か考えはありますか?