5

我正在使用引导 CSS 表单样式,当文本框收到验证错误消息时,我需要将类“错误”放在 containsg 上。我怎样才能做到这一点?

问题是,在提交表单之前,所有验证都会在 ajax 上触发,除了我的自定义验证器,它只在发布时触发。所以需要确保它在两种情况下都发生。

http://twitter.github.com/bootstrap/base-css.html#forms

4

3 回答 3

8

onError在 jquery.validate.unobtrusive 中的函数内部,只需添加如下.addClass("error")行:

function onError(error, inputElement) {  // 'this' is the form element
  var container = $(this).find("[data-valmsg-for='" + escapeAttributeValue(inputElement[0].name) + "']"),
      replace = $.parseJSON(container.attr("data-valmsg-replace")) !== false;

  container.removeClass("field-validation-valid").addClass("field-validation-error");
  error.data("unobtrusiveContainer", container);
  container.parents(".field-encapsulator:first").addClass("error");

  if (replace) {
    container.empty();
    error.removeClass("input-validation-error").appendTo(container);
  }
  else {
    error.hide();
  }
}
于 2012-08-18T09:47:01.247 回答
5

ASP.NET MVC 将field-validation-error类添加到错误消息元素,并input-validation-error通过 javascript 在服务器端和客户端形成控件。没有包含元素,具体取决于您的代码,表单控件及其标签可能位于也可能不在同一包含元素下。而且,即使他们这样做了,MVC 也会将提到的类设置为表单控件和错误消息元素,而不是包含元素。

此外,当您使用Html.EditorForModel()生成的标记自动生成表单时,如下所示:

<div class="editor-label"><label for="foo">Foo</label></div>
<div class="editor-field"><input name="foo"/></div>

没有包含元素可以映射到control-groupTwitter Bootstrap 上的类。您可以通过添加模板来更改此EditorTemplates/Object.cshtml模板。

我建议您将 Twitter Bootstrap 调整为 ASP.NET MVC,而不是相反。

于 2012-08-18T04:44:37.187 回答
1

使用 jQuery Unobtrusive Validation 时如何添加“submitHandler”函数的一些答案中所述?,可以通过 访问设置$("form").data("validator").settings

然后您可以设置您喜欢的任何有效/无效类:

var settings = $("form").data("validator").settings;
settings.errorClass += " is-invalid";
settings.validClass += " is-valid";
于 2021-04-20T07:05:03.070 回答