좀 FormData
을 보내려고 변경된 후 click
이벤트가 <label>
가 <input type="radio" name="myName" id="myRadio" value="myValue">
싸는에 감지되면 FormData가 인스턴스화되어 있는지 확인하는 방법 :부트 스트랩은 <code>XMLHttpRequest</code>를 통해 라디오 입력 '확인'상태
let labels = [].slice.call(document.getElementsByClassName("myLabels"));
labels.forEach((label) => {
label.addEventListener("click",() => {
//toggle label class to change css, then...
let formData = new FormData(document.getElementById("myForm"));
//ajax stuff now...
을
문제는 이미 부트 스트랩의 JS 전에 new FormData
인스턴스화 한 라벨을 클릭 한 후 #myRadio.checked
설정에 주변에 도착, 그래서 FormData
는 WR을 가지고 있다는 것입니다 myName
에 대한 ong 값 (현재 활성화 된 레이블의 입력이 아니라 이전에 활성화 된 레이블의 기본 라디오 입력의 값을가집니다). checked
상태가 부트 스트랩에서 레이블을 클릭하여 설정되어 있으므로 실제 DOM checked="true"
속성이 설정되어 있지 않습니다 - #myRadio.checked
의 변화를 감지
상태의 일종을 기록하지 않고 수 없습니다.
타임 아웃을 도입하여이 문제를 해결하는 방법은 해킹처럼 보입니다. 내 FormData
에서 올바른 데이터를 얻으려면 어떻게해야합니까?
참조 용으로는 here's the bootstrap docs의 라디오 스타일을 단추로 사용하십시오. 나는 언제 방법이 완료되었는지 알 수있는 내장 된 방법을 보지 못합니다.
그래, 내가 말했듯이, 부트 스트랩 js는 이벤트 * 후에 * 입력을 변경합니다. 따라서 시간 초과없이 올바른 FormData를 얻으려면 어떻게해야할까요? – Escher
@ Escher 죄송합니다. 이제 아이디어를 얻었습니다. 내 업데이트 답변을 참조하십시오. 레이블을 클릭하면 실제로 레이블의 자식 인 라디오 (입력)를 클릭하는 것과 같지 않으므로 주소 지정에주의해야합니다 (새 코드는 jQuery를 사용하여 쉽게 작성합니다) – arhak
도 다음과 같이 업데이트되었습니다. 바이올린 링크 추가 – arhak