2010-01-28 13 views
1

溫柔,在加載JSP時,選擇性地將Jquery聲明更改爲輸入值

我是新來的Jquery。提前爲基本問題道歉。

我試圖把jquery引入到我們的struts/jsp環境中。現有的代碼充斥着純粹的JavaScript。

我正在寫使用jQuery的驗證插件,像這樣一個驗證規則:

$("#advanceValidateform").validate({ 
rules: { 
    advanceAmt1: { min: 0, max: 23 }, 
    advanceAmt2: { min: 0, max: 24 }, 
    advanceAmt3: { min: 0, max: 26 } 
    } 

});

的問題是:

  1. 的最高值,最低不能硬編碼,但必須來自我的動作類(可能是從請求)。我通常通過在我的jscript函數中調用參數來完成此操作(腳本代碼傳遞確切的值)。
  2. advanceAmt1 1,2和3來自環路

的溶液。將參數化整個事情,具有用於advanceAmt與參數最小值,最大值驗證規則和調用用於包含「類中的每個輸入元件「.advanceAmt。

基本上我所需要的jQuery驗證到:

  1. 上的所有元素運行具有「類」說.advanceAmt
  2. 從輸入標籤本身拿起參數最小值,最大值(從scriplet我可以生成一分鐘= <%= X%>和max = <%= Y%>)

但我有點丟了怎麼辦一樣使用jQuery。這可能嗎?如果沒有任何建議或更好的選擇?

在此先感謝。 K

回答

2

在您的JSP頁面上,您可以使用JSTL迭代器來檢查驗證規則的集合並生成每個驗證規則。這不會影響JavaScript代碼,因爲JSTL會在服務器上進行評估,並且生成的JavaScript會在客戶端上進行評估。

例如,假設您有一組驗證規則,稱爲驗證是由您的操作創建的。

$("#advanceValidateform").validate({ 
    rules: { 
     <c:forEach var="v" items="${validations}" varStatus="loop"> 
     advanceAmt${v.id}: { min: ${v.min}, max: ${v.max} }${!loop.last ? ',' : ''} 
     </c:forEach> 
    } 
    }); 

一些假設 - 您的驗證規則集合包含三個屬性id,min和max。 if語句對於在規則之間添加逗號而不是在最後一個之後添加逗號是必需的。

希望這會有所幫助。

+1

我已經優化了您的'c:forEach'示例以利用'varStatus';} – BalusC 2010-01-28 16:14:33

+0

@BalusC謝謝,這實際上是varStatus的一個非常好的用法...我以前從未考慮過......僅用於它爲不同的行着色等 – 2010-01-28 16:22:01

+0

對於其他(有用的)方法,請查看http://java.sun.com/javaee/5/docs/api/javax/servlet/jsp/jstl/core/LoopTagStatus.html – BalusC 2010-01-28 17:09:49