【问题标题】:client side validation not working for model window / ajax-loaded-form in yii客户端验证不适用于 yii 中的模型窗口/ajax-loaded-form
【发布时间】:2014-04-16 17:46:52
【问题描述】:

我在 主布局中使用 Yii-user extension 我有一个注册链接,这是所有 Cmenu 通用的p>

视图/主布局

  echo CHtml::link('Signup','#',array('id'=>'regi'));


  $("#regi").click(function(){


    $.ajax({
        type:'GET',
url:'<?php echo Yii::app()->request->baseUrl;?>/index.php/user/registration',
        success:function(res){
            $("#dispdata").show();
            $("#dispdata").html(res);
        }
         });
             });



  <div id="dispdata"><div>

**yii 用户扩展**完美呈现此内容,如果表单值有效,甚至可以正确提交。

但如果值不正确且为空白,则会重定向到 url .../user/registration

这不是我需要的。我需要指导我该怎么做,如果值不正确或空白,它不应该重定向并在模型窗口中显示错误。

我试过了,但几乎没有得到满意的结果

如果我放置以下模型窗口本身不出现我该怎么办

我放置的模块注册控制器

    ....//some code here  (**in yiiuser register controller**)
    if ($model->save()) {
        echo CJSON::encode(array(
                        'status'=>'success',
                        ));

        }

     ....//some code here...

          Yii::app()->clientScript->scriptMap['jquery.js'] = false;
          $this->renderPartial('registration',array('model'=>$model,),false,true);

在模块视图中注册

       <?php echo   CHtml::ajaxSubmitButton(Yii::t('registration'),CHtml::normalizeUrl(array('user/registration','render'=>false)),array('dataType'=>'json',
        'success'=>'function(data) {
            if(data != null && data.status == "success") {
                $("#registration-form").append(data.data);

            }

        }')); ?>

任何人都可以指导我过去 10 天的工作,尝试了每一种钩子或骗子的方法,但无法获得结果......如何出现带有客户端验证的模型窗口......请指导我或让我知道可以做得更好


注册模型中的规则

   if (!(isset($_POST['ajax']) && $_POST['ajax']==='registration-form')) {
        array_push($rules,array('verifyCode', 'captcha',      'allowEmpty'=>!UserModule::doCaptcha('registration')));

也没有必填字段的属性

改成

  array_push($rules,array('verifyCode', 'captcha','message' => UserModule::t("captcha cannot be blank.")));

并将验证码添加到必填字段

还是不行,

【问题讨论】:

    标签: ajax yii popupwindow


    【解决方案1】:

    简单的方法是在您的 Ajax 操作中使用 render 方法并为此操作创建空布局。如果这样做,验证脚本将包含在服务器响应中。此外,您还需要使用 Yii::app()-&gt;clientScript-&gt;scriptMap 排除 jquery.js 和其他脚本,并始终将它们包含在主布局中。

    【讨论】:

    • 抱歉耽搁了,我有点困惑可能是一个愚蠢的问题,但我无法理解“在你的 Ajax 操作中使用渲染方法”,因为我没有 ajax 操作。你的意思是我必须在registrationcontrolller中创建actionajax。接下来我没有得到排除jquery.js和其他脚本与Yii::app()->clientScript->scriptMap ....事情是我没有写任何 jquery 验证,注册模型有验证,如果它没有在模型窗口中呈现,验证是否 ajax ......你能提供更多信息
    • 谢谢你:) alex 已经完成了你所说的,它可以工作,但验证码验证不起作用.....我已经用验证码规则和错误更新了我的问题
    • 当我留下一个或多个文本字段时,它会呈现错误并且不提交表单,如果我不填写它提交但不保存它,它不会显示任何验证码错误到 url - ../ ../../user/registration 并呈现错误“验证码不能为空。”该错误不会在模型窗口中呈现,因为会显示其他错误
    • 只有验证码客户端验证不起作用不起作用
    猜你喜欢
    • 1970-01-01
    • 2013-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-06
    • 2015-12-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多