我有一个页面上有jQuery UI标签,第一个标签上有一个必填字段.验证有效,如果用户未输入值,则验证消息将显示在字段旁边.但是,如果用户不在第一个选项卡上,则该字段无效是不明显的.
在这种情况下,我想显示第一个选项卡,但是我不知道如何为'无效'事件注册回调,如果有的话.
我还考虑在选项卡上方显示验证摘要,无论用户在哪个选项卡上都可以看到,但我的偏好是将用户带到该字段.
我试过查看jquery.validate.unobtrusive.js文件,它似乎扩展了jquery.validate.js.查看jquery.validate的文档,我看到有一个invalidHandler选项可以传递给validate方法,但我不知道如何使用它,因为该方法由jquery.validation.unobtrusive调用.
我在这里感觉有点失落,所以任何帮助都将不胜感激!
编辑
我从来没有想出答案,但确实想出了一个解决方法,我在下面发布了.不过,我希望有人以更好的方式回答这个问题.
validation jquery-validate jquery-ui-tabs unobtrusive-validation asp.net-mvc-3
我有一个数据录入字段,我正在收集笔记.每个音符都需要音符数据元素.这是我的模特:
public interface INoteDataEntryViewModel : IMobilePageDataContract
{
int CourseId { get; set; }
[Required(ErrorMessage = @"Note is required")]
String Note { get; set; }
[DisplayName(@"Note Date")]
DateTime NoteDate { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
您可以看到我有Note属性的Required属性.
我正在使用Razor来显示数据输入表单元素:
<div data-role="fieldcontain">
@Html.LabelFor(m => m.Note)
@Html.TextAreaFor(m => m.Note)
@Html.ValidationMessageFor(m => m.Note)
</div>
Run Code Online (Sandbox Code Playgroud)
当我使用"@ Html.TextAreaFor"时,没有对必填字段进行验证,我可以提交表格.但是,如果我更改为"@ Html.TextBoxFor",则会对必填字段进行验证,但我无法提交表单.关于TextAreaFor验证失败原因的任何想法?我正在使用不引人注目的ajax并且是jQueryMobile.
谢谢你的帮助.
我正在寻找一种方法来为Fluent验证实现不显眼的自定义验证.根据文档,它似乎并不表示它支持不显眼的验证.
同样适用于使用条件验证(When/unless).我在他们的MVC文档中看到,条件和其他复杂验证不支持不显眼的验证:
请注意,FluentValidation也适用于ASP.NET MVC的客户端验证,但并非所有规则都受支持.例如,使用条件(使用When/unless),自定义验证程序或对Must的调用定义的任何规则都不会在客户端运行.客户端支持以下验证器:
*NotNull/NotEmpty
*匹配(正则表达式)
*InclusiveBetween(范围)
*CreditCard
*电子邮件
*EqualTo(跨属性相等比较)
*长度
那么有没有人想出如何让这个工作?如果没有,是否有其他验证选项可以为不引人注目的自定义/复杂验证提供更好的支持?
asp.net-mvc fluentvalidation unobtrusive-validation asp.net-mvc-3
我一直在ASP.Net应用程序中使用以下掩码输入插件:
http://digitalbush.com/projects/masked-input-plugin/
不幸的是,这不适合MVC不显眼的验证.验证会在每个令人讨厌的密钥上触发.另外,当输入失去焦点时,regex属性总是失败,因为它在掩码控件清除之前将掩码读取为实际用户输入.
有人遇到过蒙面文本框解决方案,可以很好地运行MVC验证吗?
jquery-plugins maskedtextbox unobtrusive-validation asp.net-mvc-3
我试图找出asp.net mvc 3中不显眼的验证是如何工作的.
我想知道当我点击提交表单时触发验证检查的是什么.如何将脚本jquery.validate.unobtrusive.js绑定到表单提交事件?
我也想知道如何手动阻止/触发此检查.
我正在使用asp.net MVC4设计一个数据输入表单,它有一个类型为date的输入.
在chrome和jQueryUI datepicker中使用不显眼的jQuery库我仍然收到错误(字段news_date必须是日期.),在选择正确的日期格式后,使用datepicker(即14/02/2013)并提交表单.
一些搜索建议我应该使用jQuery.globilization库.因此,在阅读文档后,我添加了对以下脚本的引用.
$(document).ready(function () {
$.culture = Globalize.culture("en-GB");
$.validator.methods.date = function (value, element) {
return this.optional(element) || Globalize.parseDate(value, "dd/MM/yyyy", "en-GB");
}
});
Run Code Online (Sandbox Code Playgroud)
但是我仍然得到错误
如果我在chrome中调试上面的代码我可以看到"value"的值是"2014-02-14".
下面是html,它被渲染.
<div class="editor-field">
<input class="text-box single-line datepicker hasDatepicker input-validation-error" data-val="true" data-val-date="The field news_date must be a date." id="news_date" name="news_date" type="date" value="">
<script type="text/javascript">
$(function () {
$(".datepicker").datepicker({ dateFormat: "dd/MM/yyyy" });
});
</script>
<span class="field-validation-error" data-valmsg-for="news_date" data-valmsg-replace="true"><span for="news_date" class="" style="">The field news_date must be a date.</span></span>
</div>
Run Code Online (Sandbox Code Playgroud)
更新:顺便提一下,如果我将验证方法更改为硬编码.即
$.validator.methods.date …Run Code Online (Sandbox Code Playgroud) asp.net-mvc jquery unobtrusive-validation jquery-globalization asp.net-mvc-4
我正在使用ASP.NET MVC构建一个站点,并且正在使用jQuery validate unobtrusive库.我想知道是否有一种方法可以挂钩显示验证消息的事件,例如在用户输入无效内容的位置(与他们点击提交按钮的瞬间相反).
我想这样做的原因是因为我正在设置我的错误消息,如迷你弹出窗口,它出现在具有错误的字段上方 - 即使用绝对定位.由于单个字段可能具有各种不同的验证错误,我希望能够正确设置字段的位置以考虑消息的可变高度.我还需要处理这个事件,这样我就可以在输入元素周围应用一个红色边框的类.
我已经创建了一个自定义验证属性,它在服务器端工作(在发布表单之后),但我无法让验证工作在客户端.
自定义属性是:
public class ReasonableAttribute : ValidationAttribute, IClientValidatable
{
public override bool IsValid(object value)
{
return Approval.IsNumberReasonable(value.ToString());
}
public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
{
ModelClientValidationRule rule = new ModelClientValidationRule();
rule.ErrorMessage = FormatErrorMessage(metadata.GetDisplayName());
rule.ValidationType = "reasonable";
yield return rule;
}
}
Run Code Online (Sandbox Code Playgroud)
该IsNumberReasonable()功能少了点上的字段输入一些检查,使他们进入知道什么可以合理是一个批准文号(如不为空,或"未知"或类似的东西)返回bool true/false.
我的模型然后包含:
[Display(Name = "Approval Number"]
[Reasonable(ErrorMessage = "Please enter a reasonable {0}")]
public String ApprovalNumber { get; set; }
Run Code Online (Sandbox Code Playgroud)
并且视图包含:
@Html.LabelFor(model => model.ApprovalNumber, new { @class = "control-label col-md-3" })
<div class="col-md-9 append …Run Code Online (Sandbox Code Playgroud) validation asp.net-mvc jquery unobtrusive-validation asp.net-mvc-4
我使用最新版本的jQuery Validation Unobtrusive结合最新版本的jQuery Validate.验证本身就像一个魅力.但是,如果该字段无效,则会将值添加到该aria-describedby属性中.
假设我想输入我的密码(验证密码的长度必须大于6).最初的HTML看起来像这样:
<input data-val="true" data-val-minlength="The field Passwort must be a string or array type with a minimum length of '6'."
data-val-minlength-min="6" data-val-required="The Passwort field is required."
id="Password" name="Password" tabindex="2"
type="password">
Run Code Online (Sandbox Code Playgroud)
我开始输入一个只有5个字符的密码,然后input通过单击某处的某处删除焦点body.验证将贯穿,aria-describedby并将添加一系列属性和值.现在该aria-describedby属性只有一个值Password-error.如果我再次聚焦输入字段并删除所有字符,甚至按下退格键,则会在每个键盘上添加一个新值.这导致以下结果:
<input data-val="true"
data-val-minlength="The field Passwort must be a string or array type with a minimum length of '6'."
data-val-minlength-min="6"
data-val-required="The Passwort field is required."
id="Password" name="Password" tabindex="2" type="password" aria-required="true"
aria-invalid="true" class="input-validation-error"
aria-describedby="Password-error Password-error Password-error …Run Code Online (Sandbox Code Playgroud)