jQuery对MVC3中动态生成的单选按钮进行不引人注目的验证?
我有一个动态表单应用程序,正在尝试对表单元素应用适当的不引人注目的验证,并且在让表单以我想要的方式显示验证错误方面遇到了麻烦 渲染单选按钮表单项的局部视图如下所示:jQuery对MVC3中动态生成的单选按钮进行不引人注目的验证?,jquery,asp.net-mvc,jquery-validate,Jquery,Asp.net Mvc,Jquery Validate,我有一个动态表单应用程序,正在尝试对表单元素应用适当的不引人注目的验证,并且在让表单以我想要的方式显示验证错误方面遇到了麻烦 渲染单选按钮表单项的局部视图如下所示: @model FormItem <div class="form-row"> <div class="form-item">@Model.Text</div> <div class="form-item-responses"> @foreach(FormItemRespons
@model FormItem
<div class="form-row">
<div class="form-item">@Model.Text</div>
<div class="form-item-responses">
@foreach(FormItemResponse formItemResponse in Model.Responses.OrderBy(x => x.SortOrder))
{
if(Model.Required)
{
@Html.RadioButton(Model.Id.ToString(), formItemResponse.Id, formItemResponse.DefaultSelection, new { @class = "required", data_val = "true", data_val_required = "*"}) @formItemResponse.Text
}
else
{
@Html.RadioButton(Model.Id.ToString(), formItemResponse.Id, formItemResponse.DefaultSelection) @formItemResponse.Text
}
<text> </text>
}
<span class="field-validation-valid" data-valmsg-for="@Model.Id.ToString()" data-valmsg-replace="true"></span>
</div>
但这似乎覆盖了默认行为,只需在每个答案组的第一个单选按钮旁边放置一个黑色的
此字段是必填的。我想要默认的行为,然后就是这个额外的更改。我解决这个问题的方法是从表单中获取验证程序作为变量,然后访问文档中的设置。准备好了吗
var validatorData = $('#items-form').data('validator');
validatorData.settings.highlight = function (element, errorClass) {
$(element).parent().parent().css("color", "red");
};
我不知道为什么我第一次尝试的方法不起作用。文档和许多在线示例中似乎都是这样。您的浏览器的控制台中是否出现javascript问题?我看不到任何问题。我甚至将控制台日志中的错误计数放在那里,以确保它能够访问该功能,而且是这样的。但这就是所有发生的事情。是否已(在运行时)为类设置了输入标记“.input validation error”在验证后?@JuniorMayhé我不确定验证插件的默认行为,但我相信在验证期间会发生这种情况。我只是添加了适当的类“required”,包括适当的脚本,提交时,如果没有填写所需的内容,则会将输入验证错误类添加到该无线电组中。
$("#items-form").validate({
invalidHandler: function (form, validator) {
var errors = validator.numberOfInvalids();
console.log(errors);
$("input.input-validation-error").each(function() {
this.parent().css("color", "red");
});
}
});
var validatorData = $('#items-form').data('validator');
validatorData.settings.highlight = function (element, errorClass) {
$(element).parent().parent().css("color", "red");
};