【问题标题】:jQuery Validate Add Method to check if email already existsjQuery Validate Add 方法检查电子邮件是否已经存在
【发布时间】:2017-10-09 02:13:55
【问题描述】:

使用 ASP.NET MVC.. 我可以执行服务器端检查以查看用户提交的电子邮件地址是否已存在于我的数据库中:

if (db.TableName.Any(x => x.Email.Equals(object.Email, StringComparison.CurrentCultureIgnoreCase) && x.ID != object.ID))
{
    ModelState.AddModelError("Email", "This email already exists!");
    return View(object);
}

如果这是真的,那么我可以将模型返回到视图中,并且电子邮件字段将突出显示为红色,并在其下方显示验证消息。

但到目前为止,我正在使用 api 控制器并通过 ajax 调用该控制器方法。

var settings = {};
settings.baseUri = '@Request.ApplicationPath';
var infoGetUrl = "";
if (settings.baseUri === "/ProjectName") {
    infoGetUrl = settings.baseUri + "/api/controllername/";
} else {
    infoGetUrl = settings.baseUri + "api/controllername/";
}

$("#Create-Btn").on("click",
    function (e) {

        $("form").validate({
            submitHandler: function () {

                e.preventDefault();

                $.ajax({
                    method: "POST",
                    url: infoGetUrl,
                    data: $("form").serialize(),
                    success: function (data) {
                        toastr.options = {
                            onHidden: function () {
                                window.location.href = newUrl;
                            },
                            timeOut: 3000
                        }
                        toastr.success("Successfully created.");
                    },
                    error: function (jqXHR, textStatus, errorThrown) {
                        var status = capitalizeFirstLetter(textStatus);
                        var error = $.parseJSON(jqXHR.responseText);
                        toastr.error(status + " - " + error.exceptionMessage);
                    }
                });
            }
        });
    });

在我的 api 控制器发布方法中,我有这个:

if (
    db.TableName.Any(
        x => x.Email.ToUpper().Equals(object.Email.ToUpper())))
{
    throw new Exception("This email already exists!"); 
}

现在,这确实会在 toastr 通知中返回异常消息,但电子邮件文本框没有以红色突出显示,因为它没有添加引导程序 input-validation-error 类。

所以我的问题是,有没有办法添加一种方法来检查数据库,以查看用户在表单中输入的电子邮件是否已经通过 jquery 验证存在?

感谢任何帮助。

【问题讨论】:

标签: jquery ajax asp.net-mvc validation


【解决方案1】:

您需要添加如下内容:

$("#formId").validate({
        rules:{email:{required:true,remote:"your api"}},
        messages:{email:"Correct email is required."},
        submitHandler:function(){
            alert("Correct email!");
        },
        success:function(label){
            label.addClass("valid").text("Valid email!")
        },
        onkeyup:false
    });

【讨论】:

猜你喜欢
  • 2015-12-09
  • 2017-01-28
  • 1970-01-01
  • 1970-01-01
  • 2017-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多