【发布时间】:2013-12-17 12:14:35
【问题描述】:
如何在弹出对话框中显示表单中的验证错误?我不想在表单顶部将其显示为单独的 div,而是在弹出对话框中显示这些错误,以便用户单击确定并关闭该框。如何在 yii 中执行此操作?
【问题讨论】:
标签: yii
如何在弹出对话框中显示表单中的验证错误?我不想在表单顶部将其显示为单独的 div,而是在弹出对话框中显示这些错误,以便用户单击确定并关闭该框。如何在 yii 中执行此操作?
【问题讨论】:
标签: yii
将自己的javascript函数名注册到afterValidate,这是CActiveForm表单类clientOptions属性中的选项之一。
你的表单声明应该有
'clientOptions' => array(
'validateOnSubmit' => true,
'afterValidate' => 'js:myFunc',
),
您的表单将如下所示
<?php
$form = $this->beginWidget('CActiveForm', array(
'id' => 'a-form',
'enableClientValidation' => true,
'enableAjaxValidation' => true,
'errorMessageCssClass' => 'required',
'clientOptions' => array(
'validateOnSubmit' => true,
'afterValidate' => 'js:myFunc',
),
));
?>
------Your form fields------------
------Your form fields------------
------Your form fields------------
<?php $this->endWidget(); ?>
现在,你的 myFunc 代码:
<script type="text/javascript" charset="utf-8">
function myFunc(form, data, hasError)
{
if (hasError)
{
var errors='';
$.each(data, function(obj)
{
errors+=data[obj][0]+"\n";
});
alert(errors);
// Do what ever you want
return true;
}
}
</script>
【讨论】:
如果您启用客户端验证,那么您将在文本框下拉菜单下收到错误消息。没有用于弹出错误消息的内置选项。
如果您需要弹出错误消息显示,那么您必须使用 jquery。然后添加 Yii 论坛以帮助其他人:-)
有关客户端验证的详细信息,请参阅link(Yii 论坛)
【讨论】:
您可以使用自定义 CFormModel 自己构建 HTML 视图,并在模式弹出窗口中使用 getError() 方法。
见:http://www.yiiframework.com/doc/api/1.1/CModel#getError-detail
【讨论】: