只要用户单击标签,我就会使用 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>
这不是一个大问题,因为我可以使用 0 来完成这项工作,setTimeout
但是以 0 的延迟编写它真的很难看。我想到了一个浏览器错误,但我用 Chrome 和 Firefox 进行了测试,我得到了相同的结果。
对正在发生的事情有任何想法吗?