2017-04-12 47 views
0

我有一個窗體,具有從其以前的運作的網站(即舊的多米諾骨牌形式)構建的JavaScript驗證功能。我正在將該網站轉換爲xpages。是否有可能將該函數作爲CSJS與保存和關閉按鈕(如過去的應用程序中)相關聯?XPages驗證與CSJS函數調用提交按鈕

我只問,因爲有很多條件驗證要求,都需要重新創建這個函數。 。此外形式有標籤pannels和局部刷新的條件,我將不得不四處代碼以避免刷新調用驗證等

我有一種感覺,我都會有問題與一些呼叫,例如:

document=document1; 
form1 = document.forms[0] ; 
val_AlphaSuffix = form1.Suffix.value ; 
var msg=""; 
form = document.forms[0] ; 
val_Eff_Date = form.Eff_Date.value ; 
if (val_Eff_Date== "") { 
    msg=msg+"Effective Date is missing.\n"; 
} 

回答

0

如果任何人有傳遞文件,而不是每個項目的一個更好的方法,我很願意看到,但如果沒有,我認爲這個答案由Tim T.可能是最好的答案,我可以看到:

表達語言(例如#{id:Hours20})只能在組件屬性的上下文中解釋,例如字段的onChange事件代碼。將代碼移動到單獨的庫中後,代碼不再是組件的屬性,它是可以在組件屬性中引用的代碼。

與其他任何良好功能一樣,設計所有客戶端JavaScript函數來接受任何可能作爲參數的上下文敏感的東西。例如:

function updateHours(inputId, outputId) { 
    var hours20 = XSP.getElementById(inputId).value; 
    XSP.getElementById(outputId).value = hours20; 
} 

然後你onChange事件可以參考此功能,但只傳遞上下文相關的信息:

updateHours("#{id:Hours20}", "#{id:Hours10}"); 

這樣你保持在腳本庫,可重用的業務邏輯,其總是一件好事,但這些庫中沒有任何內容假定頁面結構或服務器端變量。 shareeditflag

回答1月16日在'14 0:17 添Tripcony 7,73611532

0

有你想看看一個運動部件少...

如果要執行整個客戶端驗證,不要綁定到一個按鈕,但使用表單事件onSubmit="validate(this)"。這將調用你的函數作爲參數的形式,你不必擔心,如果你有正確的形式。您可以在您的字段上使用類參數來指定通用驗證要求,例如class="mandatory max_50"

但請注意:客戶端驗證只是爲了用戶的舒適,因爲它可以輕鬆繞過。除非連接速度很慢,否則您可能想要利用XPage服務器端驗證程序和錯誤控制。

更新:使用XSP對象添加事件:https://www.notessensei.com/blog/2010/07/meet-the-xsp-object.html

+0

形式事件的onsubmit XPages中?困惑如何看待xpages? –

+0

XSP.addPresubmitListener – stwissel