我使用一个带有许多选项卡的tabView组件。在其中的许多文件中,我都有由primefaces commandButton组件提交的form。
默认情况下,PF commandButton使用ajax模式,但是当我提交表单时,页面似乎已完全加载,并且tabView组件失去了索引视图(呈现索引0)。
这是正常行为吗?
我认为我会继续使用相同的索引,因为它是ajax...
发布于 2013-01-06 19:30:22
看起来有一些命名容器(可能是p:tabView),你最好给它分配一个id,所以你会得到myTab0,myTab1等前缀,而不是像j_idt16这样的前缀(可能会随时间变化)。
例如<p:tabView id="myTab"
为了安全起见,您可以做的另一件事是在尝试使用jquery选择元素并访问它的值之前检查元素是否存在,如下所示
if($('#j_idt16\\:register_location_choice_2_input').length > 0){
//some code here
}发布于 2013-01-06 19:10:37
好吧,我的问题是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()}"/>https://stackoverflow.com/questions/14181270
复制相似问题