사용자가 라벨을 클릭하자마자 javascript로 제출하는 양식이 있습니다. 데이터가 게시되지 않는 이상한 행동이 있습니다. 하지만 지연을 사용하여 양식을 제출하면 (심지어 지연 0도) 작동합니다. 여기 JS로 양식을 제출할 때 변수가 게시되지 않음
는 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의 지연이 글을 쓰는 것은 정말 수 그것은 큰 문제가 아니다 추한. 브라우저 버그에 대해 생각했지만 크롬과 파이어 폭스로 테스트 한 결과 동일한 결과를 얻었습니다.
무슨 일이 일어나고 있는지 알고 싶습니다.
의 입력에 클릭 이벤트를 사용하여 당신은 준비가 DOM에서이 작업을 실행하는? –
값이 실제로 변경되기 전에'click' 이벤트가 발생했다고 가정합니다. –
@DavidFregoli 네, 죄송합니다. 포함하지 않으 셨습니다. – romainberger