2015-07-15 10:30:57 3463次浏览 1条回答 1 悬赏 5 金钱

yii2可以自定义某个form的一个字段用自定义的ajax验证吗?能举个例子没

  • 回答于 2015-07-16 13:09 举报

    yii\widgets\ActiveField中有这么一个属性enableAjaxValidation是否启用基于ajax的数据验证。如果没有设置值等于ActiveForm::enableAjaxValidation的值。

    $form = ActiveForm::begin();
    echo $form->field($model, 'username',['enableAjaxValidation'=>true])->textInput(['maxlength' => true]);
    echo $form->field($model, 'password')->passwordInput();
    ActiveForm::end();
    

    上面的代码我的理解是username字段进行ajax验证,password字段不进行ajax验证。但是我尝试了一下发现还有点问题,就是如果先输入password字段的话password是不会进行ajax验证的,但是只要先输入username进行了ajax验证之后再输入password时发现也出现了ajax验证,就是说一但有一个字段先进行了ajax验证其他不需要的字段也会进行ajax验证。现在还在研究这个问题,希望对你有点思路

    6 条回复
    回复于 2015-07-17 10:39 回复

    它这块说的不太清楚,你这些我也都试过了,其实ajax还是按我说的覆盖model的clientValidateAttribute方法

    回复于 2015-07-17 13:57 回复

    我说的那个方法是对的,之前不能用是因为服务器的程序写的不对造成的。

    if(Yii::$app->request->isAjax && $model->load(Yii::$app->request->post())){
            Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
            return \yii\widgets\ActiveForm::validate($model);
    }
    
    

    这样就可以了。只验证写了['enableAjaxValidation'=>true]的字段,其他不进行ajax验证的

    回复于 2015-07-17 18:13 回复

    好的,我已经知道是怎么做的了,多谢!

    回复于 2016-01-27 10:54 回复

    @YiiNewer你的问题解决了吗?

    回复于 2016-01-28 15:50 回复

    解决了

    回复于 2016-03-22 15:38 回复

    你是怎么解决的

您需要登录后才可以回答。登录 | 立即注册
YiiNewer
经理

YiiNewer

注册时间:2014-10-12
最后登录:2018-07-18
在线时长:46小时16分
  • 粉丝13
  • 金钱530
  • 威望70
  • 积分1690

热门问题