2011-03-17 3 views
1

Safari에서 XHR (ajax)을 통해 HTML을로드하면 브라우저는 checked = "checked"속성이 선택된 라디오 버튼을 렌더링하지 않습니다.Safari Ajax 버그? 체크 된 라디오가 선택되지 않았습니다

내가 아약스를 통해 페치 HTML :

<input type="radio" name="radiotest" value="off"> 
<input type="radio" name="radiotest" value="on" checked="checked"> 

브라우저가이 개되지 않은 라디오 버튼을 렌더링합니다. 일반 HTML 파일 (아약스 없음)에서 똑같은 코드를 직접로드하면 라디오 버튼이 렌더링됩니다. 마지막 상태는 체크 된 상태입니다.

무엇이 잘못 되었나요? 알려진 버그입니까? 사용 가능한 픽스가 있습니까?

편집 : 프로브가

더이 브라우저의 버그처럼 보이는, 그리고 내가 지금까지 jQuery를 사후 처리 .. 여기에 감사 도움으로 문제를 해결할 수없는 것은 내가 찾은 것입니다 :

I ajax를 통해 양식 요소를 가져 오는 페이지가 있어야합니다.

양식 요소의 행진
<input type="checkbox" name="checktest"> 
<input type="checkbox" name="checktest" checked="checked"> 

<input type="radio" name="radiotest" value="off"> 
<input type="radio" name="radiotest" value="on" checked="checked"> 

후 올바른 렌더링 checkboxed하지만 라디오는 모두 unckecked 렌더링 : HTML이입니다. 지금, 나는 (사파리 5 콘솔에서) 다음 jQuery를 명령을 실행하면 :

하나 확인 확인란을 포함하는 객체를 반환 가깝지만
$('#activemodules input[checked="checked"]'); 

.

하지만이 명령을 실행하는 경우 :

$('#activemodules input[value="on"]'); 

실제로 올바른 개체를 retuns, 그것도 같은 올바른의 outerHTML에 특성을 보여줍니다 내가 할 경우, 지금

outerHTML: "<input type="radio" name="radiotest" value="on" checked="checked">" 

을 :

$('#activemodules input[value="on"]').attr('checked','checked'); 

Safari가 올바르게 렌더링됩니다. 나는 데이터 - ischecked = "true"속성을 전달해야하고 아약스 비트가로드 된 후 모든 라디오 버튼을 잡아서 '다시 확인'하는 데 사용해야한다고 생각합니다.하지만 여전히 이렇게해도, 이에 대한 의견이나 제안을 듣고 싶습니다. 내가 확인하는 라디오에 데이터의 IsChecked = "1"속성을 추가

첫째 : 같은

+0

Safari의 현재 버전에서 여전히 문제가 있습니까? – DaSch

답변

1

이 내 솔루션은 끝난 것입니다 아약스 호출이 성공 후,

<input type="radio" name="foo" data-ischecked="1" value="bar" checked="checked"> 

다음과 마감은 나는이 실행

$('#myradios :radio') 
.each(function(){ 
    if($(this).data('ischecked')){ 
     $(this).attr('checked','checked'); 
     $(this).removeAttr('data-ischecked'); 
    } 
}); 

이 잘 작동하는 것 같다 ..하지만 중요한 다른 물건을 발견 :

데이터 속성을 data-ischecked 대신 단순히 data-checked라고 부른 경우 작동하지 않 았나? 아마 이것은 예약 된 이름일까요?

그리고 또한; 나는 넓은 선택 범위의 조작을 실행 한 경우 :

다음
$(':radio') 
    .each ... 

그것은 또한 내가 왜 모르는

작업뿐만 아니라 일부이었던 라디오의 부모 요소의 ID를 추가하지 않았다 이 같은 selecor 범위에 아약스 호출에 의해 반환 된 HTML의 :

$('#myradios :radio') 

가 작동했다 ..

0

본인은 "검사가 포함되지 않은 경우 mikkelbreum의 솔루션은 작동 발견 ed "속성에 AJAX가 삽입 된 코드를 추가합니다.

<input type="radio" name="foo" data-ischecked="1" value="bar"> 
관련 문제