Yii2实现表单客户端验证提示信息出现在指定位置

Yii2中如果启用了客户端验证,默认的是在input后面显示错误信息,它在input后面添加了一个<div class='help-block'></div>代码,错误信息就是在这个div里面显示的。但有时候,因为设计界面的原因,验证信息只能在某个固定位置显示时应该怎么办呢?找遍类参考手册好像都没看到这方面的设置。OK,让我们看看源码:

1、打开@vendor\yiisoft\yii2\assets\yii.activeForm.js,发现它在这里定义了var events={...},这里面的事件就是我们要用到的了。

2、比如我想在input失去焦点后在我的.box .tip里面显示错误信息,可以使用afterValidateAttribute事件,具体的事件说明可以看此js源码

$('#register-form').on('afterValidateAttribute',function(event, attribute, messages){
    message=messages.length>0 ? messages[0] : ''
    toggleTip(message);
});

例如,我的form ID是register-form,我在这里判断是否有错误信息,如果有的话调用toggleTip(message)显示出来。

3、不过input后面的.help-block DIV还是会显示错误信息,如果不想显示的话,用css隐藏掉.help-block,或者你用其他方式也行。


上面好像解决了我的需求&#

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Yii2中,可以使用ActiveForm widget来创建,并在验证失败时自动高亮显示错误字段。要在中高亮显示验证失败的字段,可以按照以下步骤操作: 1. 在视图中使用ActiveForm widget创建: ```php <?php use yii\widgets\ActiveForm; ?> <?php $form = ActiveForm::begin(); ?> <!-- 字段 --> <?php ActiveForm::end(); ?> ``` 2. 在控制器中处理提交并进行验证: ```php public function actionCreate() { $model = new MyModel(); if ($model->load(Yii::$app->request->post()) && $model->validate()) { // 保存数据 return $this->redirect(['view', 'id' => $model->id]); } else { return $this->render('create', [ 'model' => $model, ]); } } ``` 3. 在视图中使用ActiveField widget来定义每个字段,并将其与模型属性绑定: ```php <?php use yii\widgets\ActiveForm; ?> <?php $form = ActiveForm::begin(); ?> <?= $form->field($model, 'name')->textInput() ?> <?= $form->field($model, 'email')->textInput() ?> <!-- 其他字段 --> <?php ActiveForm::end(); ?> ``` 4. 在视图中使用$form->errorSummary()方法来显示所有验证错误消息: ```php <?php use yii\widgets\ActiveForm; ?> <?php $form = ActiveForm::begin(); ?> <?= $form->field($model, 'name')->textInput() ?> <?= $form->field($model, 'email')->textInput() ?> <!-- 其他字段 --> <?= $form->errorSummary($model); ?> <?php ActiveForm::end(); ?> ``` 此时,在中输入不合法的数据并提交后,所有验证失败的字段会自动高亮显示,并显示相应的错误消息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值