我使用tabView
带有许多选项卡的组件。在其中许多中,我都有form
由 primefacescommandButton
组件提交的。
默认情况下,PFcommandButton
使用 ajax 模式,但是当我提交表单时,我的页面似乎已完全加载,并且我的tabView
组件丢失了它的索引视图(呈现索引 0)。
请问这是正常行为吗?
我虽然我会留在同一个索引中,因为它是 ajax ......
我使用tabView
带有许多选项卡的组件。在其中许多中,我都有form
由 primefacescommandButton
组件提交的。
默认情况下,PFcommandButton
使用 ajax 模式,但是当我提交表单时,我的页面似乎已完全加载,并且我的tabView
组件丢失了它的索引视图(呈现索引 0)。
请问这是正常行为吗?
我虽然我会留在同一个索引中,因为它是 ajax ......
看起来有一些命名容器(p:tabView
也许)你最好分配一个id
给它,所以不是得到前缀j_idt16
(可能会不时变化)你会得到myTab0
, myTab1
etc 前缀......
例如<p:tabView id="myTab"
为了安全起见,您可以做的另一件事是在尝试使用 jquery 选择元素并访问其值之前检查元素是否存在,如下所示
if($('#j_idt16\\:register_location_choice_2_input').length > 0){
//some code here
}
好的,我的问题是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
传递给button
notsubmit
并使用remoteCommand
组件:
我的 JS 函数:
function validateRegisterForm(){
if(...)
validateForm();
}
我的remoteCommand
:
<p:remoteCommand name="validateForm" actionListener="#{login.registerAccount()}"/>