에러/Jquery
[콩쌤] Jquery Form Serialize Disabled 컨트롤 넘기는 방법
PineBean
2018. 2. 7. 16:08
2018.08.22 추가
더 간단한 방법을 찾았습니다.
disabled 대신 같은 기능을 하는 readonly를 사용하시면 됩니다 ㅎ_ㅠ
안녕하세요 콩입니다. 처음 쓰는 글이 에러글이라니 참 부끄럽네요.
하지만 오늘 한참 고생하며 끙끙대던걸 풀어서 이건 모두 알아야 해! 하는 마음에 글을 쓰게 되었습니다.
Jquery와 Ajax를 사용하는 사람들이라면 거의 기본처럼 사용하는게 바로 form.submit() 입니다.
form을 serialize해서 넘기는 경우도 많은데요.
그때 그 안의 input중에 disabled처리 되어있는 컨트롤러가 있는 경우에는 name 속성을 아무리 잘 줘도 넘어가지 않는 경우가 종종 있습니다,,,,ㅠㅠ
이게 브라우저의 차이인지는 아직 잘 모르겠는데 저같은경우는 익스에서는 넘어갈때도있구 아닐때도 있구 크롬에서는 거의 안넘어가더라구요.
그럴때의 해결방안을 찾아왔습니다.
폼 시리얼라이즈 하기 전에 disabled 처리된것을 모두 false 처리 한 후 form submit 하고 다시 disable 처리 하는 것 입니당.
아래로 예제 달아두겠습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | // 현재 폼 가져온 후 var myForm = $("#formID"); // disable 처리된 모든 컨트롤러들을 찾아 disable를 삭제시켜줍니다. myForm.find(':input:disabled').removeAttr('disabled'); myForm.serialize(); myForm.submit(); // 서브밋 완료 후 다시 disable처리 해 줍니다. myForm.find(':input:disabled').attr('disabled','disabled'); | cs |
참고 : https://stackoverflow.com/questions/4748655/how-to-make-serialize-take-into-account-those-disabled-input-elements
혹시 에러라던가 더 좋은방법있으면 공유부탁드려요!