首页 > 解决方案 > addError 方法不适用于 jqueryvalidation

问题描述

我正在尝试使用 jqueryvalidation 进行表单验证,这是它的文档:http ://www.runningcoder.org/jqueryvalidation/

我的 HTML 代码,这是我的表单:

<form action="javascript:;" method="post" id="VerLogin">
    <div class="form-group mb-4">
        <input id="email" name="email" type="text" class="form-control" placeholder="Email"
               data-validation="[NOTEMPTY]"/>
    </div>
    <div class="form-group mb-4">
        <input id="password" name="password" type="password" class="form-control" placeholder="Şifre"
               data-validation="[NOTEMPTY]"/>
    </div>
    <button class="btn btn-primary text-center w-100" type="submit">
        <strong>Giriş Yap</strong>
    </button>
</form>

我的 Javascript 代码,表单在提交时会出现在此处:

$('#VerLogin').validate({
    submit: {
        settings: {
            inputContainer: '.form-group',
            errorListClass: 'form-control-error-list',
            errorClass: 'has-danger',
        },
        callback: {
            onSubmit: function (formData) {
                axios.post('/panel/api/verlogin', $(formData).serialize()).then(function (response) {
                    console.log(response.data);
                    switch (response.data.STATUS) {
                        case 'ERR_USERNAME_TAKEN':
                            $('#VerLogin').addError(response.data.ERR);
                            break;

                        case 'SUCC':
                            $('#VerLogin').addError(response.data.ERR);
                            break;
                    }
                })
            }
        },
    },
    debug: true
})

我的 PHP 代码,它出现在 javascript axios.post() 之后

switch (UrlRead(3)) {
    case 'verlogin':
        $email = $_POST['email'];
        $pass = $_POST['password'];

        if ($email == "deneme@deneme.com") {
            $Return['STATUS'] = "ERR_USERNAME_TAKEN";
            $Return['ERR'] = array(
                'email' => 'Username is Taken.'
            );
        } else {
            $Return['STATUS'] = "SUCC";
            $Return['ERR'] = array(
                'email' => 'Username is available.'
            );
        }
        break;
}
echo json_encode($Return, JSON_UNESCAPED_UNICODE);

在这里它返回到javascript,它进入'ERR_USERNAME_TAKEN'和'SUCC'的情况,我用console.log测试了它,但是addError方法不起作用。调试也不起作用。这是我的控制台:

我的控制台

标签: javascriptphpjqueryaxios

解决方案


我相信你的status信封掩盖了结果。addError期望在参数对象的根中看到输入元素名称

$("#VerLogin").addError({
    "email": "Email is taken"
});

所以,也许试试这个?

if ($email == "deneme@deneme.com") {
            $Return = array(
                'email' => 'Username is Taken.',
                'STATUS' => "ERR_USERNAME_TAKEN"
            );
        }

推荐阅读