yii 中的动态表单验证

Dynamic Form validation in yii

本文关键字:表单 验证 动态 yii      更新时间:2023-09-26

我似乎无法在 yii 中获取 JavaScript 表单验证

我想将脚本指向用户表单并将其包含在客户端选项中,但它说验证表单未定义。

我试图让默认功能工作,但似乎无论如何都无法验证 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;
      }
    }

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

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