简体   繁体   English

xPages单选按钮组的onchange事件不起作用

[英]xPages radiobutton group onchange event doesn't work

Here is my simple page whit a listbox control that should refresh its values according to the radiobutton group selection. 这是我的简单页面,其中包含一个列表框控件,该控件应根据单选按钮组的选择刷新其值。 The list box uses a scope variable array as a source. 列表框使用范围变量数组作为源。 So when I click on the radiobutton I want to change list box values. 因此,当我单击单选按钮时,我想更改列表框的值。 It works after first/second click then it does not refresh list box then it works again. 第一次单击/第二次单击后,它将起作用,然后不刷新列表框,然后再次起作用。 What am I doing wrong? 我究竟做错了什么?

<?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>

Your example does work if you click on radio 如果您单击收音机,您的示例将正常工作 在此处输入图片说明 itself but it is "one click too late" if you click on label. 本身,但是如果您点击标签,那将是“一键为时已晚”。

This is an onClick partial refresh bug with radio buttons . 这是带有单选按钮的onClick部分刷新错误

Add following CCJS code to onClick event: 将以下CCJS代码添加到onClick事件:

    <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>

Radio button events can be strange with certain browsers (IE). 单选按钮事件在某些浏览器(IE)中可能很奇怪。 Do you have this setting in your xsp properties file? 您的xsp属性文件中是否有此设置?

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

Don't use both onclick and on change. 不要同时使用onclick和change。

Howard 霍华德

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM