[英]Primefaces commandButton and ajax
我使用帶有許多標簽的tabView
組件。 在其中許多form
中,我都有由primefaces commandButton
組件提交的表單。
默認情況下,PF commandButton
使用ajax模式,但是當我提交表單時,我的頁面似乎已完全加載,我的tabView
組件丟失了其索引視圖(呈現索引0)。
請問那是正常的行為嗎?
我雖然會保留在同一索引中,因為它是ajax ...
看起來似乎有一些命名容器(可能是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
}
好的,我的問題是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()}"/>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.