see*_*kay 8 unobtrusive-javascript jquery-validate asp.net-mvc-3
在.NET MVC项目中使用jQuery不显眼的验证,似乎工作正常.我正在尝试在字段正确验证(客户端和/或远程)时显示绿色复选标记.
这是一个示例字段声明:
<div class="clearfix">
@Html.LabelFor(model => model.Address1, "Street")
<div class="input">
@Html.TextBoxFor(model => model.Address1, new { @class = "xlarge", @maxlength = "100", @placeholder = "e.g. 123 Main St" })
<span class="help-message">
@Html.ValidationMessageFor(model => model.Address1)
<span class="isaok">Looks great.</span>
</span>
<span class="help-block">Enter the street.</span>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
我想要做的是在"span.isaok"中添加一个"有效"类,后者又有一个背景图像的复选标记.
我尝试使用高亮/不亮:
$.validator.setDefaults({
onkeyup: false,
highlight: function (element, errorClass, validClass) {
$(element).addClass(errorClass).removeClass(validClass);
$(element.form).find("label[for=" + element.id + "]").addClass("error");
$(element).parent().find("span.isaok").removeClass("active");
},
unhighlight: function (element, errorClass, validClass) {
$(element).removeClass(errorClass).addClass(validClass);
$(element.form).find("label[for=" + element.id + "]").removeClass("error");
if ($(element).val().length > 0) {
$(element).parent().find("span.isaok").addClass("active");
}
}
Run Code Online (Sandbox Code Playgroud)
});
但即使它们是空的,它也会显示所有字段的绿色复选标记!(因此显然是错误的)
然后我尝试使用'success'选项,但似乎永远不会被解雇.
我错过了什么?
编辑:所以我找到了这篇博文,并且能够利用成功函数ie
$(function () {
var settings = $.data($('form')[0], 'validator').settings;
settings.onkeyup = false;
settings.onfocusout = function (element) { $(element).valid(); };
var oldErrorFunction = settings.errorPlacement;
var oldSuccessFunction = settings.success;
settings.errorPlacement = function (error, inputElement) {
inputElement.parent().find("span.isaok").removeClass("active");
oldErrorFunction(error, inputElement);
};
settings.success = function (label) {
var elementId = '#' + label.attr("for");
$(elementId).parent().find("span.isaok").addClass("active");
oldSuccessFunction(label);
};
});
Run Code Online (Sandbox Code Playgroud)
但是现在如果表单无效,它会同时显示错误消息和有效标记......

一旦我点击页面上的任何地方,后者就会消失.

万一有人遇到类似的问题,我最终通过使用 jquery.validate.unobtrusive.js 的未缩小版本并将我的 js 添加到 onError 和 onSuccess 方法来解决此问题。现有代码保留原样。在部署期间使用重新缩小的版本。
谢谢。
| 归档时间: |
|
| 查看次数: |
4547 次 |
| 最近记录: |