验证错误未与AJAX一起显示

亨尼·范·登·伯格

我已经为此苦苦挣扎了两天,我不知道问题出在哪里。

当我离开文本框时,Ajax调用是正确的,并且结果以true或false返回,并且成功执行函数:

问题是图像和错误文本没有显示在文本框旁边。如果我在文本框中输入的字符数超过50个,则显示“必须少于50个字符”消息,但我输入的用户名已经存在,则该消息不显示。

我想念什么?有什么建议?

我使用一个DevExpress文本框

Html.DevExpress().Label(
        edtSettings =>
        {
            edtSettings.ControlStyle.CssClass = "label";
            edtSettings.Text = "User Name:";
            edtSettings.AssociatedControlName = "UserName";
        }
    )
    .Render();
    Html.DevExpress().TextBox(
        edtSettings =>
        {
            edtSettings.Name = "UserName";
            edtSettings.ControlStyle.CssClass = "editor";
            edtSettings.ShowModelErrors = true;
            edtSettings.Width = 100;
            edtSettings.Properties.ValidationSettings.Assign(IserValidationHelper.UserNameValidationSettings);
            edtSettings.Properties.ClientSideEvents.Validation = "OnNameValidation";
            edtSettings.ControlStyle.BackColor = System.Drawing.Color.LightYellow;
        }
        )
        .Bind(DataBinder.Eval(IserUser, "UserName"))
        .Render();

我有以下JavaScript。

<script type="text/javascript">

function OnNameValidation(s, e) {

    if (e.value == null)
        e.isValid = false;

    $.ajax({
        type: 'POST',
        url: '/Admin/CheckUsername',
        dataType: 'json',
        data: { userName: e.value },
        error: function () { alert("error"); },
        success: function (Data) {
            if (Data.result == true) {
                e.isValid = false;
                e.errorText = "User Exits";
            };
        }
    });

    var name = e.value;
    if (name == "")
        e.isValid = false;

    if (name.length > 50) {
        e.isValid = false;
        e.errorText = "Must be under 50 characters";
    }

}

我的控制器中有以下方法。

[HttpPost]
    public ActionResult CheckUsername(string userName)
    {
        bool status = WebSecurity.UserExists(userName);
        return Json(new { result = status });
    }

JSON结果

JSON结果2

亨尼·范·登·伯格

问题出在我的$ .ajax电话上。我必须包含设置asyncasync:false,),因为默认异步为true。现在可以正常工作了。

function OnNameValidation(s, e) {

    if (e.value == null)
        e.isValid = false;

    $.ajax({
        type: 'POST',
        url: '/ISERAdmin/CheckUsername',
        dataType: 'json',
        async:false,
        data: { userName: e.value },
        error: function () { alert("error"); },
        success: function (Data) {
            if (Data.result == true) {
                e.isValid = false;
                e.errorText = "User Exits";
            };
        }
    });

    var name = e.value;
    if (name == "")
        e.isValid = false;

    if (name.length > 56) {
        e.isValid = false;
        e.errorText = "Must be under 56 characters";
    }

}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

自定义验证属性错误消息未与ValidationMessageFor一起显示

来自分类Dev

fb共享按钮未与ajax文件一起显示

来自分类Dev

PHP语法错误未与类一起显示

来自分类Dev

如何一起显示验证消息

来自分类Dev

结果未与$ Scope一起显示

来自分类Dev

与Ajax一起显示的分页帖子

来自分类Dev

Ajax Calendar Extender提示未与文本框一起显示

来自分类Dev

Docker卷未与Redis一起使用(挂载确实与inspect一起显示)

来自分类Dev

Express验证器与节点express一起生成的错误

来自分类Dev

标头未与Ajax请求一起发送

来自分类Dev

Ajax未与Rotativa ViewAsPdf一起运行

来自分类Dev

验证错误未显示

来自分类Dev

应用徽章未与解析推送通知一起显示

来自分类Dev

导航栏未与MMDrawerController一起显示

来自分类Dev

tkinter顶级菜单未与macOS一起显示

来自分类Dev

Podman图片未与Podman图片ls一起显示

来自分类Dev

伪元素未与隐藏的CSS一起显示

来自分类Dev

操作栏未与AppCompat一起显示

来自分类Dev

下拉菜单未与Django一起显示

来自分类Dev

应用徽章未与分析推送通知一起显示

来自分类Dev

USB硬盘未与fdisk一起显示

来自分类Dev

导航栏未与MMDrawerController一起显示

来自分类Dev

Javascript:图像未与 createElement 一起显示

来自分类Dev

图表未与 wicked_pdf 一起显示

来自分类Dev

模板中的道具未与 VueJS 一起显示

来自分类Dev

ajax a rails 表单后未显示验证错误

来自分类Dev

与剑道一起验证

来自分类Dev

Ajax错误处理无法与CORS一起使用

来自分类Dev

与显示块一起使用时元素的位置错误