从php数组构建jquery验证的动态规则

时间:2014-01-29 18:33:56

标签: javascript php jquery ajax validation

我正在构建一个表单(userModify),其中包含数组$ userFields所需的所有属性。我希望能够在获得验证服务器端之前使用jquery validate来检查数据。我有一个在页面前面构建的字段数组。

 $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
          }
        }
        ?>
       });

我还有其他方法吗?

1 个答案:

答案 0 :(得分: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 });