我有一个页面上有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.
谢谢你的帮助.
我一直在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
在索引页面中,我显示了员工列表,当用户单击编辑链接时,我显示了编辑视图.
此编辑视图呈现部分视图(_EditPartial)以显示可编辑的不同字段.
当用户单击"保存"按钮时,我想进行Ajax调用.
我想在将数据发布到服务器之前验证输入.我尝试使用不引人注目的验证,但验证根本不会触发我.以下是代码段.
在web.config中启用ClientValidationEnabled和UnobtrusiveJavaScriptEnabled.
代码段
@model WebApplication1.Models.employee
<div id="mypartial" class="form-horizontal">
<h4>employee</h4>
<hr />
@Html.ValidationSummary(true)
@Html.HiddenFor(model => model.id)
<div class="form-group">
@Html.LabelFor(model => model.name, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.name)
@Html.ValidationMessageFor(model => model.name)
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.age, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.age)
@Html.ValidationMessageFor(model => model.age)
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.address, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.address) …Run Code Online (Sandbox Code Playgroud) asp.net-mvc jquery razor unobtrusive-validation asp.net-mvc-4
我已经创建了一个自定义验证属性,它在服务器端工作(在发布表单之后),但我无法让验证工作在客户端.
自定义属性是:
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) 在我的ASP.NET MVC 4项目中,我有一个我的视图模型的验证器,它包含RuleSets的规则定义.Edit当所有客户端验证通过时,在Post操作中使用的规则集.Url和Email规则集规则集中使用的Edit规则(您可以在下面看到)和特殊的ajax操作,它们仅相应地验证电子邮件和仅验证Url.
我的问题是视图不知道它应该使用Edit规则集来生成客户端html属性,并使用default规则集,它是空的.如何判断视图使用Edit规则集进行输入属性生成?
模型:
public class ShopInfoViewModel
{
public long ShopId { get; set; }
public string Name { get; set; }
public string Url { get; set; }
public string Description { get; set; }
public string Email { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
验证器:
public class ShopInfoViewModelValidator : AbstractValidator<ShopInfoViewModel>
{
public ShopInfoViewModelValidator()
{
var shopManagementService = ServiceLocator.Instance.GetService<IShopService>();
RuleSet("Edit", () =>
{
RuleFor(x => …Run Code Online (Sandbox Code Playgroud) validation asp.net-mvc fluentvalidation unobtrusive-validation asp.net-mvc-4