XP循环中的XPage ClientSide验证

时间:2017-10-20 07:20:14

标签: xpages

我在XPage中有50个radiobuttonGroup。字段名称是顺序的 Field_1,Field_2,Field_3 ......最多50个。

我想在一个for循环中验证所有这些字段。请找到我到目前为止尝试过但我无法解决语法问题。是可能还是我在圈子里跑。

<xp:button id="btnSave"
                        styleClass="btn btn-icon btn-primary">
                        <i class="fa fa-share" aria-hidden="true"></i>
                        <xp:eventHandler event="onclick"
                            submit="false">

                            <xp:this.script><![CDATA[for (var c=1; c<50; c++)
{
    var fID = "\#{id:Question_"+ c +"}";
    var elements = document.getElementsByName(fID);
    alert(elements);
    var syc = 0;
    for(i=0; i<elements.length; i++) 
    {
        if (elements[i].checked == false)
        {
            syc += 1;
        } 

    }
    if (elements.length==syc)
    {
        alert("Please select a value for question " + c);
        return false;
    }
}
]]></xp:this.script>
                        </xp:eventHandler>

 </xp:button>



      <xp:radioGroup id="Question_1" value="#{document1.Question_1}">
<xp:selectItem itemLabel="One" itemValue="One"></xp:selectItem>
    <xp:selectItem itemLabel="Two" itemValue="Two"></xp:selectItem>
        </xp:radioGroup>

1 个答案:

答案 0 :(得分:2)

更改方法并为输入字段提供一个公共类。然后,您将获得要验证的所有字段的集合并循环遍历它们。

您需要检查名称(具有相同名称但组成一组的不同ID的单选按钮)才能获得分组权限。 我将循环遍历它们并创建一个对象,其名称作为属性名称,如果单选按钮被选中并创建(如果未选中但已丢失),则设置为true。 最后,您有一个具有所有布尔属性的js对象。如果一个是错误的验证出错了,你按名称获取元素并为错误添加类aria-invalid

相关问题