我正在做一些类似于远程验证的事情,只是我已经通过jquery手动进行了调用,并设置了我必须设置的任何东西。
现在我的问题是,如果我想告诉验证器一个特定的文本框是无效的(并阻止页面提交,突出显示该文本框,等等)。我该如何在代码中做到这一点呢?
@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?
}
发布于 2011-11-03 07:31:04
首先,您可以添加验证摘要:
@Html.ValidationMessageFor(m => m.Slug)
然后,您可以使用.showError方法手动触发jQuery验证/非显式验证。下面是一个示例:
var errorArray = {};
errorArray["Slug"] = 'Some error message for the Slug text box';
$('#SomeFormId').validate().showErrors(errorArray);
发布于 2016-11-10 23:51:38
您还可以执行以下操作:
@Html.ValidationMessageFor(m => m.Slug)
在您的代码中使用此函数:
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");
}
}
}
然后可以设置错误
setError("Slug", "errorMsg");
发布于 2018-06-19 22:42:34
使用showErrors不允许错误持续存在,因此运行.valid()可以清除错误。相反,我添加了一个"forcibleerror“规则和一个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";
});
用法:
forceError($('#Slug'), 'my custom message');
要将其恢复为有效状态,请执行以下操作:
forceError($('#Slug'), '');
https://stackoverflow.com/questions/7380278
复制相似问题