VC5项目
我的Razor视图中有这个TextBox和Validation消息:
@ Html.TextBoxFor(m => m.FireSrv.Size) @ Html.ValidationMessageFor(m => m.FireSrv.Size)
我想清除(不隐藏)此消息,我不想清除整个表单。
我尝试了这个并且它不起作用:
$('#FireSrv_Size&#39)。发现("点域验证-有效&#34)。除去();
FireSrv_Size是正确的,它是表单中字段的id。
我已实施
IValidatableObject
在我的ViewModel中。
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
string em = "Size is required";
if (HasFireSrv) { if (string.IsNullOrEmpty(FireSrv.Size)) { yield return new ValidationResult(em, new[] { "FireSrv.Size" }); } }
...
这是在生成验证错误之前和之后在View source中显示的内容:
<input id="FireSrv_Size" name="FireSrv.Size" type="text" value="" />
<span class="field-validation-valid" data-valmsg-for="FireSrv.Size" data-valmsg-replace="true"></span>
<input class="input-validation-error" id="FireSrv_Size" name="FireSrv.Size" type="text" value="" />
<span class="field-validation-error" data-valmsg-for="FireSrv.Size" data-valmsg-replace="true">Size is required</span>
如何清除那条验证消息?
答案 0 :(得分:1)
我觉得有必要指出.removeClass();
从元素中删除所有类,通常不是所需的效果。您可以简单地使用$(".field-validation-valid").removeClass(".field-validation-valid");
删除单个班级,因为您可以将要删除的班级作为目标。
或定位特定元素
<input id="FireSrv_Size" class="FireSrv_Size" type="text" value="" />
<span class="field-validation-valid" data-valmsg-for="FireSrv.Size1" data-valmsg-replace="true"></span>
修订:使用添加的课程
Razor语法:
@Html.TextBoxFor(m => m.FireSrv.Size, new { @class = "validate-my-field" }) @Html.ValidationMessageFor(m => m.FireSrv.Size)
新标记有类:
<input id="FireSrv_Size" class="validate-my-field" name="FireSrv.Size" type="text" value="" />
新课程代码:
var myfield = $('.validate-my-field')
myfield.removeClass('field-validation-error');
myfield.next('span[data-valmsg-for]').removeClass("field-validation-error").addClass("field-validation-valid").html("");
具体到ID:
var myfield = $('#FireSrv_Size');
myfield.removeClass('field-validation-error');
myfield.next('span[data-valmsg-for]').removeClass("field-validation-error").addClass("field-validation-valid").html("");
一站式拍摄:
$('#FireSrv_Size').removeClass('field-validation-error').next('span[data-valmsg-for]').removeClass("field-validation-error").addClass("field-validation-valid").html("");
如果在页面渲染后添加了跨度上的验证数据属性,则可能需要执行以下操作:
$('#FireSrv_Size').removeClass('field-validation-error').next('span').filter(function(){
return $('[data-valmsg-for]');
}).removeClass("field-validation-error").addClass("field-validation-valid").html("");
答案 1 :(得分:0)
如果您要在服务器端删除它,请使用以下命令:
ModelState["FireSrv.Size"].Errors.Clear();
在客户端,您可以执行以下操作:
$('#FireSrv_Size").removeClass("field-validation-error");
见jsFiddle。如果这对你不起作用,请告诉我。
更新1 - 经过一些研究和一些调试后,这是在本地示例中删除错误的代码。
var $form = $("form");
var $validator = $form.validate();
// all errors
//var $errors = $form.find(".field-validation-error span");
// find just error attached to FireSrv_Size
var $errors = $("#FireSrv_Size").next(".field-validation-error").find("span");
// trick unobtrusive to think the elements were successfully validated
// this removes the validation messages
$errors.each(function(){
$validator.settings.success($(this));
});
我使用这篇文章SO作为起点。
答案 2 :(得分:0)
这清除了......- validation-error类和data-valmsg-for =&#34; FireSrv.Size&#34;的内容。第一行清除TextBox上的input-validation-error类。
var textname = '"FireSrv.Size"'; $('input:text[name=' + textname + ']').removeClass();
var dvmf = '"FireSrv.Size"'; $('span[data-valmsg-for=' + dvmf + ']').html("");
$('span[data-valmsg-for=' + dvmf + ']').removeClass("field-validation-error").addClass("field-validation-valid");
答案 3 :(得分:0)
您可以使用$(".field-validation-error").empty()
清除所有验证错误消息。
使用.remove()
或.hide()
可以从屏幕上删除错误消息,即使提交时有任何错误也不会再次显示。
希望这有助于解决清除验证错误消息的主要目的。