2014-01-29 48 views
2

我正在建立一個表單(userModify)與數組$ userFields所需的所有屬性。我希望能夠在驗證服務器端之前使用jquery validate來檢查數據。我有一個在頁面中早期構建的字段數組。構建jQuery驗證從PHP數組的動態規則

$userFields= 
array('userName'=>array('type'=>'field','required'=>NULL,'options'=>NULL), 
     'password' => array('type'=> 'field','required'=>NULL,'options'=>NULL), 
     'lastName' =>array('type'=>'text','maxSize'=>'32','required'=>'*','options'=>NULL), 
     'firstName'=>array('type'=>'text','maxSize'=>'32','required'=>'*','options'=>NULL), 
     'phoneNumber'=>array('type'=>'select','maxSize'=>NULL,'required'=>NULL,'options'=>$numbers), 
     'extension' =>array('type'=>'text','maxSize'=>'8','required'=>'*','options'=>NULL)); 

的驗證腳本:

$("#userModify").validate({ 
    rules: { 
     phoneNumber: { 
      required: true 
     } 
    } 
}); 

我的問題是如何能得到場規則到JQuery驗證結構動態。看看這個數組,所以在這個例子中,我會爲lastName,firstName和extension創建規則。我不希望靜態添加字段規則,因爲數組可能是任意數量的不同字段,並且驗證結構將包含大量規則。

我想過如何調用ajax調用另一個文件來獲取數組,然後分解ajax調用的結果,這是一個好主意嗎?

我知道這段代碼顯然是錯誤的,但我在下面寫這個來試圖描述我正在嘗試做什麼。

$("#userModify").validate({ 
    rules: { 
     <?php 
     foreach ($userFields as $k => $v) 
     { 
      if ($v['required'] == "*") 
      { 
      //add jquery rule 
      } 
     } 
     ?> 
     }); 

有沒有其他方法我應該試試?

回答

0

你可以嘗試這樣的事情,你只要將數據傳送到的JavaScript,讓它創建的規則:

var form = <?php echo json_encode($userFields); ?>; 
var rules = {}, i; 

for (name in form) { 
    if (form[name].required === '*') { 
     rules[name].required = true; 
    } 
} 

$("#userModify").validate({ rules: rules });