2014-02-20 3 views
0

변경 이벤트가있는 단추 세트가 있습니다. 변경시, 이벤트로 아약스 게시물을 호출하여 값을 저장합니다. 오류가 발생하면 buttonset을 초기 상태로 되돌리려합니다.jquery 단추 세트를 롤백하는 방법

페이지로드 (intital)의 변수에 초기 상태를 유지합니다. ajax 호출이 실패하면 "error"함수에서 'initial'을 사용하여 해당 버튼을 확인합니다.

그래픽 버튼 세트가 초기 값으로 돌아 가지 않습니다. 두 개의 버튼 중 경보가 울릴 때, 점검 된 attr이 올바르게 설정되어 있지만 화면에 반영되지 않은 것을 볼 수 있습니다. 나는이 :-(에 대해 많이 봤 때문에

도움말, 감사

JS 코드 :

//keep initial buttonset checked value 
var intial = $('#radio :checked'); 

//on buttonset change, do a ajax post, and in case of failure, set original value back 
$("#radio").buttonset().change(function(){ 
    $.post("/to/somewhere",{showList:'show', id:123}) 
     .error(function(){ 
      if (intial.val() == "show"){ 
       $('#visibleYes').attr("checked", true); 
      } 
      else { 
       $('#visibleNo').attr("checked", true); 
      } 
     })     
    }) 
}); 

당신은 업데이트 한 후 버튼 위젯을 refresh한다

<div id="radio"> 
    <input class="yesNoRadio" type="radio" id="visibleYes" name="visible" value="show" checked="checked"/><label for="visibleYes">Show</label> 
    <input class="yesNoRadio" type="radio" id="visibleNo" name="visible" value="hide" /><label for="visibleNo">Hide</label> 
</div> 
+0

JavaScript는 사실 jQuery입니다. – MattD

+0

@MattD, jQuery는 자바 스크립트입니다. 언어가 아니라 단지 도서관 일뿐입니다. –

+0

@ FrédéricHamidi 나는 이것을 알고 있지만 jQuery 일 때 자바 스크립트라고 생각하고 jQuery 라이브러리를 참조하지 않는다면 코드를 수정하는 사람은 아무 것도 작동하지 않는다. 아마도 내 초기 의견에서 언급 했어야합니다. – MattD

답변

1

HTML 코드 증강 된 요소의 checked 속성 :

$(intial.val() == "show" ? "#visibleYes" : "#visibleNo") 
    .prop("checked", true).button("refresh"); 

attr() 대신 prop()을 사용했습니다. 이는 checked과 같은 부울 속성과 함께 사용하는 것이 좋습니다.

+0

그것은 작동합니다 ... 당신은 저의 하루를 저장했습니다 :-) 실제로 버튼 세트를 사용하여 나는 버튼에서 직접 누르지 않으면 안됩니다. 고마워요. – xavier

+0

@xavier 이것이 사용 된 해결책이라면, 답으로 표시해야합니다. – MattD

관련 문제