11

我输入密码,然后在重复密码字段中重复,但红色警报没有消失,当我单击提交按钮时,它是成功的并且没有错误验证。重复密码时如何使比较警报消失?

这是我在模型中的规则代码

public function rules()
{
    return [
        ['username', 'filter', 'filter' => 'trim'],
        ['username', 'required'],
        ['username', 'unique', 'targetClass' => '\common\models\User', 'message' => 'This username has already been taken.'],
        ['username', 'string', 'min' => 2, 'max' => 255],

        ['email', 'filter', 'filter' => 'trim'],
        ['email', 'required'],
        ['email', 'email'],
        ['email', 'unique', 'targetClass' => '\common\models\User', 'message' => 'This email address has already been taken.'],

        ['password', 'required'],
        ['password','compare'],
        ['password', 'string', 'min' => 6],
        ['password_repeat','safe']

    ];
}

和我的表格

<?php $form = ActiveForm::begin(); ?>

<h3>Your Account</h3>
<?= $form->field($modelUser, 'username')->textInput(['maxlength' => 45, 'class' => 'input-xlarge form-control']) ?>

<?= $form->field($modelUser, 'password')->passwordInput(['class' => 'form-control input-xlarge']) ?>

<?= $form->field($modelUser, 'password_repeat')->passwordInput(['class' => 'form-control input-xlarge']) ?>
<button class="btn btn-primary" type="submit">Continue</button>

<?php ActiveForm::end(); ?>

这是我的截图 yii2 比较验证

4

3 回答 3

16

就我而言,我刚刚更改了密码验证:

['password','compare'],

对此:

['password_repeat', 'compare', 'compareAttribute' => 'password'],
于 2014-10-18T13:21:08.080 回答
2

如果我对您的理解正确:您输入了第一个密码,并且当您将焦点更改到另一个字段(password_repeat)时,即使您甚至没有输入第二个字段,表单也已经显示了一条错误消息。如果是这样,您可以禁用客户端验证,以便仅在您提交表单后验证数据。为此,您可以在ActiveForm初始化中添加以下内容(这是一个选项):

<?php $form = ActiveForm::begin(['enableClientValidation' => false']);?>
于 2014-10-14T18:38:49.153 回答
0

我只需要这一行:

[['password_repeat'], 'compare', 'compareAttribute' => 'password', 'message' => 'Your error message']
于 2014-11-20T14:46:16.147 回答