gpt4 book ai didi

javascript - Yii2 自定义表单验证

转载 作者:行者123 更新时间:2023-12-03 01:26:24 24 4
gpt4 key购买 nike

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

我的页面上有以下脚本:

<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:

function initProfilePage(){
$('#form_id').on('beforeValidate', function (e) {
$('#form_id').yiiActiveForm('find', 'attribute').validate = function (attribute, value, messages, deferred, $form) {
//Custom Validation
}
return true;
});
}

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

<script>
jQuery(function ( $ ) {
initProfilePage();
jQuery('#user-profile').yiiActiveForm(... here we have the validation parameter which works fine ...)
});
</script>

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

TypeError: $(...).yiiActiveForm(...) is undefined

我做错了什么以及如何解决它?

最佳答案

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

它会抛出验证未定义的错误,因为 find方法返回未定义,而它应该返回要验证的输入的属性,返回未定义的原因是其中之一

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

要为您正在验证的特定字段生成由 ActiveForm 生成的确切名称,您可以使用 \yii\helpers\Html::getInputId($model,'attribute') .

所以要像下面这样改变你的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);

关于javascript - Yii2 自定义表单验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51524169/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com