首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在文本框上手动设置不显眼的验证错误

在文本框上手动设置不显眼的验证错误
EN

Stack Overflow用户
提问于 2011-09-12 02:13:39
回答 4查看 25.8K关注 0票数 21

我正在做一些类似于远程验证的事情,只是我已经通过jquery手动进行了调用,并设置了我必须设置的任何东西。

现在我的问题是,如果我想告诉验证器一个特定的文本框是无效的(并阻止页面提交,突出显示该文本框,等等)。我该如何在代码中做到这一点呢?

代码语言:javascript
复制
@Html.LabelFor(m => Model.Slug)
@Html.TextBoxFor(m => Model.Slug)
<span id="UrlMsg" class="field-validation-error" style="display: none;"></span>

 if (error) {
        $('#UrlMsg').html('This name is already in use.').fadeIn('fast');
        //what should I do here for the rest of the validation?
 }
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-11-03 07:31:04

首先,您可以添加验证摘要:

代码语言:javascript
复制
@Html.ValidationMessageFor(m => m.Slug)

然后,您可以使用.showError方法手动触发jQuery验证/非显式验证。下面是一个示例:

代码语言:javascript
复制
var errorArray = {};
errorArray["Slug"] = 'Some error message for the Slug text box';
$('#SomeFormId').validate().showErrors(errorArray);
票数 50
EN

Stack Overflow用户

发布于 2016-11-10 23:51:38

您还可以执行以下操作:

代码语言:javascript
复制
@Html.ValidationMessageFor(m => m.Slug)

在您的代码中使用此函数:

代码语言:javascript
复制
function setError(id, message) {
        var span = $("span[data-valmsg-for=\"" + id + "\"]");
        if (span && span.length > 0) {
            $(span).html(message);
            if (message && message != "") {
                $(span).removeClass("field-validation-valid");
                $(span).addClass("field-validation-no-valid");
            } else {
                $(span).removeClass("field-validation-no-valid");
                $(span).addClass("field-validation-valid");
            }
        }
    }

然后可以设置错误

代码语言:javascript
复制
setError("Slug", "errorMsg");
票数 5
EN

Stack Overflow用户

发布于 2018-06-19 22:42:34

使用showErrors不允许错误持续存在,因此运行.valid()可以清除错误。相反,我添加了一个"forcibleerror“规则和一个javascript方法来设置消息。

代码语言:javascript
复制
function forceError(element, errorMessage) {
    $(element).rules("add", {
        forcibleerror: true,
        messages: {
            forcibleerror: function () { return errorMessage; }
        }
    });
    var isForced = false;
    if (errorMessage) {
        isForced = true;
    }
    $(element)[0].dataset.isForced = isForced;
    $(element).valid();
}
$.validator.addMethod("forcibleerror", function (value, element) {
    return $(element)[0].dataset.isForced !== "true";
});

用法:

代码语言:javascript
复制
forceError($('#Slug'), 'my custom message');

要将其恢复为有效状态,请执行以下操作:

代码语言:javascript
复制
forceError($('#Slug'), '');
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7380278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档