【问题标题】:Yii ajaxSubmitButton client-side validation issueYii ajaxSubmitButton 客户端验证问题
【发布时间】:2014-02-07 16:10:06
【问题描述】:

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

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

现在,它可以执行客户端验证。但是,successcomplete 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
            )
        );

【问题讨论】:

    标签: javascript php jquery ajax yii


    【解决方案1】:

    我尝试了您的代码,发现如果您删除“'enableAjaxValidation'=>true”行,您的代码将完美运行,请检查并告诉我这是否也适合您。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-06
      • 1970-01-01
      • 2011-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多