【问题标题】:Errors on submit in a popup box?在弹出框中提交时出错?
【发布时间】:2013-12-17 12:14:35
【问题描述】:

如何在弹出对话框中显示表单中的验证错误?我不想在表单顶部将其显示为单独的 div,而是在弹出对话框中显示这些错误,以便用户单击确定并关闭该框。如何在 yii 中执行此操作?

【问题讨论】:

    标签: yii


    【解决方案1】:

    将自己的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> 
    

    【讨论】:

    • 如果您按照 Kumar_v 的建议将此添加到 yii 论坛,将会非常有帮助! :-)
    【解决方案2】:

    如果您启用客户端验证,那么您将在文本框下拉菜单下收到错误消息。没有用于弹出错误消息的内置选项。

    如果您需要弹出错误消息显示,那么您必须使用 jquery。然后添加 Yii 论坛以帮助其他人:-)

    有关客户端验证的详细信息,请参阅link(Yii 论坛)

    【讨论】:

      【解决方案3】:

      您可以使用自定义 CFormModel 自己构建 HTML 视图,并在模式弹出窗口中使用 getError() 方法。

      见:http://www.yiiframework.com/doc/api/1.1/CModel#getError-detail

      和:http://www.yiiframework.com/doc/api/1.1/CFormModel

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-09
        相关资源
        最近更新 更多