2011-09-09 5 views
2

그래서 Jquery .serializeArray() 메서드를 구현하여 요청에서 JSON 문자열로 변환하여 양식을 변환하려고합니다. 이것은 체크 박스와 라디오 버튼을 제외하고 내 양식에 적합합니다. 이 기능이 제대로 작동하는 유일한 시간은 검사했을 때입니다. 때로는 그들이 확인되지 않았는지 알 필요가 있습니다. 그들은 여전히 ​​연재 될 필요가 있습니다."확인"되지 않은 Jquery - SerializeArray() 확인란

수동으로 양식을 반복하여 값을 가져 와서 JSON 개체를 작성한다고 가정합니다.하지만 이는 최적이 아닙니다.

여기에있는 Jquery 문서에 따르면 Jquery Docs 성공적인 제어를 위해 W3 표준에 맞는 것은 found here입니다. 불행히도 여기에는 체크되지 않은 체크 박스는 포함되지 않습니다. 누구든지이 문제를 해결할 수있는 방법이 있습니까? 미리 감사드립니다 ...


제외 확인하지 않습니다 체크 박스에 직렬화 된 양식을 뱉어
var form = document.getElementById('f'); 
console.log($(form).serializeArray(); 

...

+0

이와 유사 : http://stackoverflow.com/questions/3029870/jquery-serialize-does-not-register-checkboxes – CAbbott

+0

코드가 있습니까? 132456 – Incognito

+0

롤 (Lol), 그래도 그렇게 재미 있지는 않다. 당신이 알아야 할 모든 것이 그곳에 있습니다. 나는 그것을 업데이트 할 것이다 ... – gabaum10

답변

0

좋아요, 그래서 제가 해결 방법을 개발했습니다.

기본적으로 원본 JSON 개체를 직렬화 된 양식과 비교하는 함수를 작성했습니다. 반복하면서 구성 요소를 비교했습니다. 불일치가있는 경우 양식에서 구성 요소를 꺼내 수동으로 JSON에 삽입했습니다. 누락 된 구성 요소를 추가하려면 array.splice() 메서드를 사용했습니다. 누락 된 모든 입력을 처리했습니다.

3

당신이 정말로 체크 박스와 라디오 버튼을 사용하려는 경우는, 그이 입력 필드는 대응하는 숨겨진 필드를 업데이트합니다. 이렇게하면 숨겨진 입력이 항상 전송됩니다.

2

이 시도에 대해, 나는 비슷한 문제가 있었는지, 내가 선택하지 않은 체크 박스뿐만 아니라 값이해야한다고 생각, 여기에 빠른 작업 주위에, 이 양식에 각각의 체크 박스에 별도의 클래스를 추가입니다 "CBX" 메이크업 데이터 직렬화를

와 형태의 배열

다음 "CBX"의 클래스를 가진 모든 체크 박스를 통해 루프 및 어레이 (serializeArray())

로 만든 후에, 0의 값으로 상기 어레이에 추가

데이터를 게시하면 체크되지 않은 checbox와 값이 0으로 표시되어 게시물과 함께 전송됩니다.

var data = $('#form').serializeArray(); 

    $(".cbx:not(:checked)").each(function() { 
     data.push({name: this.name, value: '0' }); 
    }); 

    $.post("testpage.asp", data); 
2

다른 대안은 jQuery 플러그인을 사용하는 것입니다. 예를 들어, serializeJSON는 다음과 같이 체크되지 않은 체크 박스의 값을 설정할 수있는 옵션이 있습니다

$('form').serializeJSON({checkboxUncheckedValue: "false"}); 

어떤 경우를,이 체크되지 않은 값에 대한 숨겨진 입력을 사용하는 것이 가장 좋습니다.

관련 문제