javascript - Yii ajaxSubmitButton 客户端验证问题

标签 javascript php jquery ajax yii

您可能知道,Yii 不使用 CHtml::ajaxSubmitButton 执行客户端验证。所以在谷歌和stackoverflow上花了很长时间后,我发现我应该使用下面的链接

a-simple-way-to-get-yii-client-side-form-validation-run-when-submitting-by-ajax

现在,它可以执行客户端验证。但是,成功完成 ajax 函数不会在验证后触发。

有什么想法吗?

为了更熟悉主题,我把我的代码放在这里:

Yii::app()->clientScript->registerCoreScript('yii');

Yii::app()->clientScript->registerScript('Yii Fix',";$.yii.fix = {
        ajaxSubmit : {  
            beforeSend : function(form) {
                return function(xhr,opt) {
                    form = $(form);
                    $._data(form[0], 'events').submit[0].handler();
                    var he = form.data('hasError');
                    form.removeData('hasError');
                    return he===false;
                }
            },

            afterValidate : function(form, data, hasError) {
                $(form).data('hasError', hasError);
                return true;
            }
        }
    };",CclientScript::POS_HEAD);

我的表格:

$uniqid = uniqid();

$form = $this->beginWidget('CActiveForm', array(
'id' => 'pagescontents-add-new-contents'.$uniqid,
'htmlOptions' => array(
    'class' => 'form-horizontal',
    'role' => 'form'
),
'enableClientValidation' => true,
'enableAjaxValidation'=>true,
'clientOptions' => array(
    'validateOnSubmit' => true,
    'validateOnChange'=>false,
    'afterValidate'=>'js:$.yii.fix.ajaxSubmit.afterValidate',
),
));
//The rest of code
...
//Ajax submit button

$button_uniqid = uniqid();
echo CHtml::ajaxSubmitButton(Messages::getMessage('ADD_NEW'), $this->createUrl('pagescontents/addPage/'), array(
            'beforeSend' => '$.yii.fix.ajaxSubmit.beforeSend("#pagescontents-add-new-contents'.$uniqid.'")',
            'type'=>'POST',
            'success' => "js:function(data){
                            $('#page_modal').html(''); 
                            $('.modal-backdrop').remove(); 
                            $('#pageContents_list').html(data);
                        }", 

        ),
        array(
            'class' => 'btn btn-primary',
//          'data-dismiss' => 'modal',
            'id' => 'deletesubmit_' . $button_uniqid
            )
        );

最佳答案

我尝试了您的代码,发现如果您删除“'enableAjaxValidation'=>true”行,您的代码将完美运行,请检查它并让我知道它是否也适用于您。

关于javascript - Yii ajaxSubmitButton 客户端验证问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21200980/

相关文章:

javascript - 有没有办法像嵌套列表一样创建表格? (图片供引用)

javascript - 将参数传递给 async.js 任务

jquery - 阻止 href 打开链接,但仍执行其他绑定(bind)事件

javascript - 如何使用 jquery 或 javascript 隐藏 div?

javascript - 如何修复 nginx 上的 http 414 Request-URI Too Large 错误?

c# - ASP.Net 列表框 : maintain listbox scrolling position after partial postback (not site scrolling position! )

php - 如何通过 PHP 导入读取 CSV 来提取 XML 属性?

php - 不使用 wp_die 向用户显示警告/错误

PHP Twitter API - 如何拉入多个用户的推文?

jquery - 禁用第一个子 div 中的按钮