标签: unobtrusive-validation

在ASP.NET MVC 3中使用不显眼的验证,如何在表单无效时采取措施?

我有一个页面上有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

6
推荐指数
1
解决办法
3804
查看次数

禁用为特定提交按钮启用不显眼的验证

我有两个提交按钮返回,继续.单击"返回"时,如何禁用客户端验证.我试图将取消类添加到按钮属性,但它接缝没有帮助.

UPD.实际上这是取消课程.但是如果你动态添加它(通过javascript),它接缝不起作用.

asp.net-mvc submit button unobtrusive-validation

6
推荐指数
2
解决办法
6971
查看次数

asp.net mvc TextAreaFor未被验证为必填字段

我有一个数据录入字段,我正在收集笔记.每个音符都需要音符数据元素.这是我的模特:

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.

谢谢你的帮助.

razor jquery-mobile unobtrusive-validation

6
推荐指数
1
解决办法
4341
查看次数

使用Fluent验证进行不显眼的自定义/条件验证

我正在寻找一种方法来为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

6
推荐指数
1
解决办法
2894
查看次数

任何人都知道任何与MVC Unobtrusive Validation一起使用的jQuery Mask插件吗?

我一直在ASP.Net应用程序中使用以下掩码输入插件:

http://digitalbush.com/projects/masked-input-plugin/

不幸的是,这不适合MVC不显眼的验证.验证会在每个令人讨厌的密钥上触发.另外,当输入失去焦点时,regex属性总是失败,因为它在掩码控件清除之前将掩码读取为实际用户输入.

有人遇到过蒙面文本框解决方案,可以很好地运行MVC验证吗?

jquery-plugins maskedtextbox unobtrusive-validation asp.net-mvc-3

6
推荐指数
1
解决办法
903
查看次数

什么是在asp.net MVC 3中触发Unobtrusive Validation检查

我试图找出asp.net mvc 3中不显眼的验证是如何工作的.

我想知道当我点击提交表单时触发验证检查的是什么.如何将脚本jquery.validate.unobtrusive.js绑定到表单提交事件?

我也想知道如何手动阻止/触发此检查.

unobtrusive-validation asp.net-mvc-3

6
推荐指数
1
解决办法
3320
查看次数

en-GB日期的不引人注目的验证

我正在使用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

6
推荐指数
1
解决办法
8298
查看次数

jQuery Validate Unobtrusive - 挂钩到单个输入的错误事件

我正在使用ASP.NET MVC构建一个站点,并且正在使用jQuery validate unobtrusive库.我想知道是否有一种方法可以挂钩显示验证消息的事件,例如在用户输入无效内容的位置(与他们点击提交按钮的瞬间相反).

我想这样做的原因是因为我正在设置我的错误消息,如迷你弹出窗口,它出现在具有错误的字段上方 - 即使用绝对定位.由于单个字段可能具有各种不同的验证错误,我希望能够正确设置字段的位置以考虑消息的可变高度.我还需要处理这个事件,这样我就可以在输入元素周围应用一个红色边框的类.

asp.net-mvc jquery jquery-validate unobtrusive-validation

6
推荐指数
2
解决办法
3462
查看次数

jQuery自定义属性的不显眼的客户端验证

我已经创建了一个自定义验证属性,它在服务器端工作(在发布表单之后),但我无法让验证工作在客户端.

自定义属性是:

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

6
推荐指数
1
解决办法
2万
查看次数

使用jQuery Validation Unobtrusive时描述的aria的多个值

我使用最新版本的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)

javascript jquery unobtrusive-validation

6
推荐指数
1
解决办法
1679
查看次数