我使用带有许多标签的tabView
组件。在其中许多内容中,我form
由primefaces commandButton
组件提交。
默认情况下,PF commandButton
使用ajax模式,但是当我提交表单时,我的页面似乎已完全加载,我的tabView
组件丢失了索引视图(索引0已呈现)。
这是正常的行为吗?
我虽然我会留在同一个索引,因为它是ajax ......
答案 0 :(得分:1)
看起来有一些命名容器(可能是p:tabView
),您最好为其分配id
,因此不要像j_idt16
这样的前缀(可能会不时变化) )您将获得myTab0
,myTab1
等前缀...
例如<p:tabView id="myTab"
在安全方面你可以做的另一件事是在尝试用jquery选择它之前检查元素是否存在并访问它的值,如下所示
if($('#j_idt16\\:register_location_choice_2_input').length > 0){
//some code here
}
答案 1 :(得分:0)
好的,我的问题是JS validateRegisterForm
函数。当我删除它,它工作,但我需要它...
我用它来检查验证表格是否可以启动。
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
而不是submit
并使用remoteCommand
组件:
我的JS功能:
function validateRegisterForm(){
if(...)
validateForm();
}
我的remoteCommand
:
<p:remoteCommand name="validateForm" actionListener="#{login.registerAccount()}"/>