2016-10-14 4 views
1

다음은 라디오 버튼 그룹 선택에 따라 값을 새로 고쳐야하는 목록 상자 컨트롤입니다. 목록 상자는 범위 변수 배열을 소스로 사용합니다. 그래서 radiobutton을 클릭하면 목록 상자 값을 변경하려고합니다. 첫 번째/두 번째 클릭 후 작동하며 목록 상자를 새로 고치지 않으면 다시 작동합니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?xPages 라디오 버튼 그룹 onchange 이벤트가 작동하지 않습니다.

<?xml version="1.0" encoding="UTF-8"?> 
<xp:view xmlns:xp="http://www.ibm.com/xsp/core"> 

<xp:this.beforePageLoad><![CDATA[#{javascript:viewScope.MYARRAY = new Array(); 
viewScope.MYARRAY.push(["NAME1", "ID1"]); 
viewScope.MYARRAY.push(["NAME2", "ID3"]); 
viewScope.MYARRAY.push(["NAME3", "ID4"]); 
viewScope.MYARRAY.push(["NAME4", "ID5"]);}]]> 
</xp:this.beforePageLoad> 

<xp:radioGroup id="radioGroupSortBy" defaultValue="0"> 
    <xp:selectItem itemLabel="by Name" itemValue="0"></xp:selectItem> 
    <xp:selectItem itemLabel="by Id" itemValue="1"></xp:selectItem> 
     <xp:eventHandler event="onchange" submit="true" 
      refreshMode="partial" refreshId="listBox1"> 
     </xp:eventHandler> 
     <xp:eventHandler event="onclick" submit="true" 
      refreshMode="partial" refreshId="listBox1"> 
     </xp:eventHandler> 
</xp:radioGroup> 

<xp:listBox id="listBox1" style="width:390.0px;height:166.0px"> 
    <xp:selectItems> 
     <xp:this.value><![CDATA[#{javascript:var arr = new Array(); 
      for(var i=0; i<viewScope.MYARRAY.length; i++){ 
       if(getComponent("radioGroupSortBy").getValue()==0){ 
        arr.push(viewScope.MYARRAY[i][0] + " - " + viewScope.MYARRAY[i][1]); 
       } else { 
        arr.push(viewScope.MYARRAY[i][1] + " - " + viewScope.MYARRAY[i][0]); 
       } 
      } 
      return arr.sort();}]]> 
     </xp:this.value> 
    </xp:selectItems> 
</xp:listBox> 
</xp:view> 

답변

1

귀하의 예를 작동합니까하지만 "한 번의 클릭 너무 늦었다"당신이 라벨을 클릭하면됩니다.

This is an onClick partial refresh bug with radio buttons.

onClick 이벤트에 CCJS 코드 다음

추가 :

<xp:eventHandler event="onclick" submit="true" 
     refreshMode="partial" refreshId="listBox1"> 
     <xp:this.script><![CDATA[ 
      var e = arguments[0] || window.event; 
      e = dojo.fixEvent(e); 
      if (e.target.type != "radio") { 
       e.preventDefault(); 
       dojo.query("input",e.target).forEach(function(inputNode){ 
        dojo.attr(inputNode,"checked",!(dojo.attr(inputNode,"checked"))); 
       }); 
      } 
      return true; 
     ]]></xp:this.script> 
    </xp:eventHandler> 
0

라디오 버튼 이벤트가 특정 브라우저 (IE)에서 이상 할 수 있습니다. xsp 등록 정보 파일에이 설정이 있습니까?

http://www-01.ibm.com/support/docview.wss?uid=swg21631834

모두의 onclick 변경에 사용하지 마십시오. 당신이 라디오 enter image description here 자체를 클릭하면

하워드

관련 문제