yii中的动态表单验证

时间:2016-01-16 13:35:37

标签: javascript php jquery validation yii

我似乎无法在yii中使用javascript表单验证

我想将脚本指向用户表单并将其包含在clientOptions中,但它表示未定义validateform。

我试图让默认功能正常工作,但似乎无论如何都不能在Yii中验证动态创建的字段,而无需像这样创建自己的函数。我将知道这个特定实例的字段,所以我现在可以手动将它们放入

$form = $this->beginWidget('booster.widgets.TbActiveForm', array(
    'id' => 'user-form',
    'enableAjaxValidation' => true,
    'clientOptions' => array(
        'validateOnChange' => false,
        'validateOnType' => false,
        'validateOnSubmit' => 'js:validateForm',
    ),
        ));
?>
     <?php
$varform = new DynamicForm();
$varform->attributes = $user->getDynamicFormConfig();
$varform->model_name = 'user';
echo $varform->run();
?>

JS

function validateForm()
    {
    var a=document.forms["#user-form"]["user_TestQuestion"].value;
    var b=document.forms["#user-form"]["user_NEWQUESTION"].value;

    if (a==null || a=="",b==null || b=="")
      {
      alert("Please Fill All Required Field");
      return false;
      }
    }

1 个答案:

答案 0 :(得分:0)

validateOnSubmit是布尔参数。如果您想在验证字段上执行某些操作,可以使用:

  1. beforeValidate函数,在执行由表单提交操作触发的基于jax的验证之前将调用的函数(仅在validateOnSubmit设置为true时可用)。预期的函数签名应该是beforeValidate(form) {...},其中'form'是表单对象的jquery表示。如果此函数的返回值不为true,则验证将被取消。
  2. afterValidate函数,在执行由表单提交操作触发的基于jax的验证后调用的函数(仅在validateOnSubmit设置为true时可用)。预期的函数签名应该是afterValidate(form, data, hasError) {...},其中'form'是表单对象的jquery表示; 'data'是来自服务器端验证的JSON响应; 'hasError'是一个布尔值,表示是否存在任何验证错误。如果此函数的返回值不为真,则正常表单提交将被取消。