如何手动触发validation与jQueryvalidation?

我想手动触发validation,包括与jQueryvalidation显示错误消息。

我试图完成的情况是这样的一个forms:

<form> <input id=i1> <button id=b1> <input id=i2> <button id=b2> </form> 

单击b1时,只应validationi1。 当点击b2时,只有i2应该被validation。 但是,所有的字段都必须发布。 我怎样才能做到这一点? 我想过处理b1 / b2的点击事件,并手动validation表单的一部分。

该库似乎允许validation单个元素。 只需将一个点击事件关联到您的button,然后尝试以下操作:

 $("#myform").validate().element("#i1"); 

这里的例子:

http://docs.jquery.com/Plugins/Validation/Validator/element#element

或者可以简单地使用: $('#myElem').valid()

 if ($('#myElem').valid()){ // will also trigger unobtrusive validation only for this element if in place // add your extra logic here to execute only when element is valid } 

我的方法如下。 现在,我只想要我的表单被validation,当一个特定的checkbox被点击/更改:

 $('#myForm input:checkbox[name=yourChkBxName]').click( function(e){ $("#myForm").valid(); } ) 

从版本1.14开始,还有一个没有logging的方法

 validator.checkForm() 

此方法静默validation返回true / false。 它不会触发错误消息。

我试过它tnx @Anastasiosyal我想分享在这个线程。

当我清空字段时,input字段没有被触发,我并不积极。 但我设法分别触发每个必填字段使用:

 $(".setting-p input").bind("change", function () { //Seven.NetOps.validateSettings(Seven.NetOps.saveSettings); /*$.validator.unobtrusive.parse($('#saveForm'));*/ $('#NodeZoomLevel').valid(); $('#ZoomLevel').valid(); $('#CenterLatitude').valid(); $('#CenterLongitude').valid(); $('#NodeIconSize').valid(); $('#SaveDashboard').valid(); $('#AutoRefresh').valid(); }); 

这是我的看法

 @using (Html.BeginForm("SaveSettings", "Settings", FormMethod.Post, new {id = "saveForm"})) { <div id="sevenRightBody"> <div id="mapMenuitemPanel" class="setingsPanelStyle" style="display: block;"> <div class="defaultpanelTitleStyle">Map Settings</div> Customize the map view upon initial navigation to the map view page. <p class="setting-p">@Html.LabelFor(x => x.NodeZoomLevel)</p> <p class="setting-p">@Html.EditorFor(x => x.NodeZoomLevel) @Html.ValidationMessageFor(x => x.NodeZoomLevel)</p> <p class="setting-p">@Html.LabelFor(x => x.ZoomLevel)</p> <p class="setting-p">@Html.EditorFor(x => x.ZoomLevel) @Html.ValidationMessageFor(x => x.ZoomLevel)</p> <p class="setting-p">@Html.LabelFor(x => x.CenterLatitude)</p> <p class="setting-p">@Html.EditorFor(x => x.CenterLatitude) @Html.ValidationMessageFor(x => x.CenterLatitude)</p> <p class="setting-p">@Html.LabelFor(x => x.CenterLongitude)</p> <p class="setting-p">@Html.EditorFor(x => x.CenterLongitude) @Html.ValidationMessageFor(x => x.CenterLongitude)</p> <p class="setting-p">@Html.LabelFor(x => x.NodeIconSize)</p> <p class="setting-p">@Html.SliderSelectFor(x => x.NodeIconSize) @Html.ValidationMessageFor(x => x.NodeIconSize)</p> </div> 

和我的实体

  public class UserSetting : IEquatable<UserSetting> { [Required(ErrorMessage = "Missing Node Zoom Level.")] [Range(200, 10000000, ErrorMessage = "Node Zoom Level must be between {1} and {2}.")] [DefaultValue(100000)] [Display(Name = "Node Zoom Level")] public double NodeZoomLevel { get; set; } [Required(ErrorMessage = "Missing Zoom Level.")] [Range(200, 10000000, ErrorMessage = "Zoom Level must be between {1} and {2}.")] [DefaultValue(1000000)] [Display(Name = "Zoom Level")] public double ZoomLevel { get; set; } [Range(-90, 90, ErrorMessage = "Latitude degrees must be between {1} and {2}.")] [Required(ErrorMessage = "Missing Latitude.")] [DefaultValue(-200)] [Display(Name = "Latitude")] public double CenterLatitude { get; set; } [Range(-180, 180, ErrorMessage = "Longitude degrees must be between {1} and {2}.")] [Required(ErrorMessage = "Missing Longitude.")] [DefaultValue(-200)] [Display(Name = "Longitude")] public double CenterLongitude { get; set; } [Display(Name = "Save Dashboard")] public bool SaveDashboard { get; set; } ..... } 

如果您在表单上使用带参数的validate() ,并且希望手动validation表单的一个字段,那么有一个好办法:

 var validationManager = $('.myForm').validate(myParameters); ... validationManager.element($(this)); 

文档: Validator.element()

在我的类似的情况下,我有我自己的validation逻辑,只是想使用jQueryvalidation来显示消息。 这就是我所做的。

 //1) Enable jQuery validation var validator = $('#myForm').validate(); $('#myButton').click(function(){ //my own validation logic here //..... //2) when validation failed, show the error message manually validator.showErrors({ 'myField': 'my custom error message' }); }); 
Interesting Posts