0

我使用tabView带有许多选项卡的组件。在其中许多中,我都有form由 primefacescommandButton组件提交的。

默认情况下,PFcommandButton使用 ajax 模式,但是当我提交表单时,我的页面似乎已完全加载,并且我的tabView组件丢失了它的索引视图(呈现索引 0)。

请问这是正常行为吗?

我虽然我会留在同一个索引中,因为它是 ajax ......

4

2 回答 2

1

看起来有一些命名容器(p:tabView也许)你最好分配一个id给它,所以不是得到前缀j_idt16(可能会不时变化)你会得到myTab0, myTab1etc 前缀......

例如<p:tabView id="myTab"

为了安全起见,您可以做的另一件事是在尝试使用 jquery 选择元素并访问其值之前检查元素是否存在,如下所示

if($('#j_idt16\\:register_location_choice_2_input').length > 0){
    //some code here
}
于 2013-01-06T11:30:21.823 回答
0

好的,我的问题是JSvalidateRegisterForm函数。当我删除它时,它可以工作,但我需要它......

我用它来检查是否可以启动验证表单。

function validateRegisterForm(){    

if($('#j_idt16\\:register_location_choice_2_input').attr('checked')){

    if($('#j_idt16\\:register_galaxies_input').val() == 0){
        var galaxie = MUST_CHOOSE_GALAXY;
        alert(galaxie.charAt(0).toUpperCase() + galaxie.slice(1));
        return false;
    }

    if($('#j_idt16\\:register_solar_systems_input').val() == 0){
        var ss = MUST_CHOOSE_SOLAR_SYSTEM;
        alert(ss.charAt(0).toUpperCase() + ss.slice(1));
        return false;
    }

    if($('#j_idt16\\:register_positions_input').val() == 0){
        var position = MUST_CHOOSE_POSITION;
        alert(position.charAt(0).toUpperCase() + position.slice(1));
        return false;
    }

}


return true;    

}

那么如何在发送和允许或不允许使用 ajax 验证表单之前检查字段值呢?

编辑 :

好的,我通过在我的 JS 函数中启动验证解决了我的问题,按钮type传递给buttonnotsubmit并使用remoteCommand组件:

我的 JS 函数:

function validateRegisterForm(){    

if(...)
      validateForm();

}

我的remoteCommand

<p:remoteCommand name="validateForm" actionListener="#{login.registerAccount()}"/>
于 2013-01-06T11:10:36.510 回答