2015-01-22 2 views
1

내 JSF보기에서 p:selectOneRadio을 사용하고 있습니다. 이제 클라이언트 측에서이 구성 요소의 값을 부작용으로 변경해야합니다. 이 구성 요소의 클라이언트 측 API에서 나는 내가 그것을 사용하는 방법을 적절한 방법 찾으면 내가이 사용할 수 있다고 생각 다음 발견 : (JS에 대한 많은 지식을하지 않고) 나에게Client Side API에서 p : selectOneRadio의 값을 설정하는 방법은 무엇입니까?

PrimeFaces.widget.SelectOneRadio=PrimeFaces.widget.BaseWidget.extend(
{ 
    // ...  
    select:function(a){ 
     this.checkedRadio=a; 
     a.addClass("ui-state-active") 
     .children(".ui-radiobutton-icon") 
     .addClass("ui-icon-bullet").removeClass("ui-icon-blank"); 
     a.prev().children(":radio").prop("checked",true)} 
}); 

그것을 선택하고 싶은 라디오 버튼의 인스턴스와 비슷한 것을 전달해야하는 것처럼 보입니다. 나는 여러 가지 방법이 시도했지만, 그들 중 누구도 작동하지 않습니다 :

<p:selectOneRadio widgetVar="sel" id="id-sel" >     
     <f:selectItem itemValue="#{false}" itemLabel="n/a" /> 
     <f:selectItem itemValue="#{true}" itemLabel="date" /> 
</p:selectOneRadio>    

<p:commandButton onclick="PF('sel').select(sel.inputs[1]);"/> 
<p:commandButton onclick="PF('sel').select(PF('sel').inputs[1]);"/> 
<p:commandButton onclick="PF('sel').select($('input:radio[id*=id-sel\\:1]'));"/>  
<p:commandButton 
     onclick="PF('sel').select(document.getElementById('menuform:id-sel:1'));"/> 

그러나 나는 또한 값을 전달 및/또는 직접 레이블을 시도했다 (이 selectOneMenu에 대한 예를 들어, 작동). 다시 성공하지 못했습니다 (이 경우 놀랄 일은 아닙니다)

<p:commandButton onclick="PF('sel').select('date');"/> 
<p:commandButton onclick="PF('sel').select('true');"/> 
<p:commandButton onclick="PF('sel').select(1);"/> 
<p:commandButton onclick="PF('sel').select(true);"/> 
<p:commandButton onclick="PF('sel').select(#{true});"/> 

아무도 모릅니다.

답변

3

전달되어야 요소는이 범위가 CSS 클래스로 .ui-radiobutton-box을 가지고, 라디오 모양을 시뮬레이션하고 느끼는 <span>입니다, 간단한 호출은 다음과 같습니다

PF('selectOneRadioWV').select($('.ui-radiobutton-box').first()) 

이것은 을 선택하십시오 것 첫 번째 라디오. 하지expected behaviourselect 기능 선택 것이다 그러나

, 예상 한 이전 선택한 라디오 선택을 취소하고 새로운 하나를 선택합니다.

PF('selectOneRadioWV').jq.find('input:radio[value="1"]').parent().next().trigger('click.selectOneRadio'); 

가에서는이 1 다음 탐색 값이있는 라디오 입력을 선택 : 당신이 값을 기준으로 선택하려는 경우 말했다

존재는 다음과 같은 접근 방식은 작동합니다 (이는 더 의미가 있습니다) 해당 .ui-radiobutton-box으로 이동하여 위젯에 의해 정의 된 event을 트리거합니다. 그런 식으로 아약스 관련 이벤트가 적절하게 호출되는지 확인합니다.

+0

tyvm, 지금은 작동했습니다! 적절한 예에서 빠져 나오면 PF ('sel') 여야합니다 .jq.find ('input : radio [value = false]') parent(). next(). trigger ('click.selectOneRadio'); ' – stg

+0

그리고이 도움으로 이제 클라이언트 측 API에서 위젯을 확장하여 좀 더 편한 사용법을 느낄 수 있다고 생각합니다. – stg

+1

듣고 있으면 다행입니다 :) –

관련 문제