【发布时间】:2016-03-03 06:21:27
【问题描述】:
如何使用 Html 标签创建 Yii2 Active Form 自定义消息?
我通过jQuery.activeForm更改此消息。
这是我正在尝试的 javascript 代码:
myform.js - 包括AppAssets.php。
操作顺序:
- 在浏览器上:通过 jQuery 验证电子邮件
-
在服务器上: 验证电子邮件、验证电子邮件是否存在、是否存在不良用户列表等等...... - 这些功能位于
ajax/is-email-busy操作中。我通过 Ajax 查询来实现 - 在浏览器上:如果该邮箱已经注册,并且是好用户的邮箱,请更改消息
-
在浏览器上:当用户点击消息中的链接时,将弹出登录表单
$("#form-ad").on("afterValidateAttribute", function(event, attribute, messages) { var hasError = messages.length !== 0; var field = $(attribute.container); var input = field.find(attribute.input); if(attribute.name == 'email' && !hasError) { var form_data = new FormData(); form_data.append('email', input.val()); $.ajax({ url: 'ajax/is-email-busy', dataType: 'json', cache: false, contentType: false, processData: false, data: form_data, type: 'post', success: function(data) { console.log(data); jQuery('#form-ad') .yiiActiveForm( 'updateAttribute', 'adform-email', ['This email is busy. If it\'s your email <a href="#">click here</a>']); } }); } });
在视图文件中:
echo $form->field($model, 'email')->input('email');
【问题讨论】:
-
请显示当前消息/字段/表单的ecode(视图和相关模型)
-
已解决。将
jQuery('#form-ad').yiiActiveForm('updateAttribute'...替换为jQuery('#adform-email').next().append(data.message);。此消息来自 Ajax 响应。
标签: jquery yii2 message active-form