首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Yii2自定义表单验证

Yii2自定义表单验证
EN

Stack Overflow用户
提问于 2018-07-26 00:57:41
回答 1查看 1.3K关注 0票数 0

我需要在Yii2框架中实现自定义表单验证。

我的页面上有以下脚本:

代码语言:javascript
复制
<script src="/assets/acb8f29e/jquery.js"></script>
<script src="/assets/cb9d857a/yii.js"></script>
<script src="/assets/cb9d857a/yii.activeForm.js"></script>
<script src="/unify/assets/js/form.js"></script>

form.js内部,我们有一个函数initProfilePage

代码语言:javascript
复制
function initProfilePage(){
    $('#form_id').on('beforeValidate', function (e) {
            $('#form_id').yiiActiveForm('find', 'attribute').validate = function (attribute, value, messages, deferred, $form) {
                //Custom Validation
            }
        return true;
    });
}

在页面的最底部,我有以下脚本:

代码语言:javascript
复制
<script>
    jQuery(function ( $ ) {
        initProfilePage();    
        jQuery('#user-profile').yiiActiveForm(... here we have the validation parameter which works fine ...)
    });
</script>

表单显示正确,没有任何错误,但是当我提交表单时,我收到以下错误:

代码语言:javascript
复制
TypeError: $(...).yiiActiveForm(...) is undefined

我做错了什么?如何修复它?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-26 09:05:11

错误的原因是,当您调用$('#form_id').yiiActiveForm('find', 'attribute')时,实际上在第一个参数中传递了函数名find,在第二个参数中传递了要验证的输入。但是它不应该是name属性,而应该是id,它也是由model-attribute格式的ActiveForm生成的。

它为validate undefined抛出错误,因为find方法返回undefined,而它应该返回要验证的输入的attributes,并且返回undefined的原因是其中之一

  • 您没有为输入传递正确的id。
  • 您正在使用ActiveForm配置中的"enableClientValidation"=>false

要为要验证的特定字段生成与ActiveForm生成的名称完全相同的名称,可以使用\yii\helpers\Html::getInputId($model,'attribute')

因此,要像下面这样更改您的javascript

代码语言:javascript
复制
$this->registerJs ( "$('#form_id').on('beforeValidate', function (e) {
                $('#form_id').yiiActiveForm('find', '".Html::getInputId($model , 'name')."').validate = function (attribute, value, messages, deferred, \$form) {
                console.log('validating now');
            }
        return false;
    });", \yii\web\View::POS_READY);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51524169

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档