Mam formularz, który przesyłam z javascriptem, gdy tylko użytkownik kliknie etykietę. Istnieje dziwne zachowanie, w którym dane nie są wysyłane. Ale jeśli przekażę formularz z opóźnieniem (nawet z opóźnieniem 0), działa.Zmienne Post nie są ustawione podczas wysyłania formularza za pomocą JS
Oto 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>
Skrypt:
<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>
Nie jest to duży problem, jak można dokonać tej pracy z setTimeout
ale piszę to z opóźnieniem 0 jest naprawdę brzydki. Myślałem o błędzie przeglądarki, ale testowałem z Chrome i Firefoxem i mam taki sam wynik.
Masz pojęcie o tym, co się dzieje?
są uruchomione to na DOM gotowy? –
Zakładam, że zdarzenie 'click' zostanie wywołane, zanim wartości zostaną faktycznie zmienione. –
@DavidFregoli Tak, przepraszam, zapomniałem dodać, że – romainberger