[英]Jquery Unobtrusive Validation not firing in MVC
如标题所示,我在MVC应用程序中的javascript中遇到JQuery Unobtrusive验证问题。
我做了什么:
我表单上的输入已绑定了适当的规则,这些规则将在我的自定义javascript中进行检查:
<input type="text" class="form-control" name="rates_taxes" id="rates_taxes" data-val='true' data-val-ispositive="You must enter a positive value here or 0" data-val-isnumeric="You must enter a numerical value here. (e.g 250000)" required>
...
jQuery.validator.addMethod('isnumeric', function (value) {
return $.isNumeric(value);
}, '');
jQuery.validator.unobtrusive.adapters.add('isnumeric', function (options) {
options.rules['isnumeric'] = {};
options.messages['isnumeric'] = options.message;
});
这里没有显示,我测试了当用户键入输入或提交表单时,是否确实输入了isNumeric方法。
问题是表格的提交。 InvalidHandler和SubmitHandler这两个事件根本不会触发。
我已经使用Jquery Validation网站上的方法实现了该方法-该方法将处理程序作为Javascript对象传递给$("form").validate({ invalidHander: function(e, validator){ ... });
方法-它没有触发
现在我有这种方法:
$(document).on("click", "button[type='submit']", function (e) {
if ($(e.target).data("customValidate") === true) {
e.preventDefault();
var form = $(e.target).parents("form");
$(form).data("validator").settings.submitHandler = function (formhandler) {
alert('submit');
formhandler.submit();
}; // <----
$(form).data("validator").settings.invalidHandler = function (e, validator) {
alert('error');
for (var i = 0; i < validator.errorList.length; i++) {
var element = '#' + validator.errorList[i].element.name;
var error = validator.errorList[i].message;
if (!error || error === "undefined") {
error = "This field is required.";
}
$(element).prop('title', error);
$(element).data('placement', 'right');
$(element).data('toggle', 'tooltip').tooltip('show');
}
}; // <----
$(form).validate();
}
});
直接在表单的数据中为Jquery Unobtrusive Validation Engine设置无效和有效的处理程序。
两种方法都行不通。 尽管没有实现无干扰的验证,但我尚未与我的团队一起在另一个MVC站点工作,尽管我没有实现无干扰的验证-因此,上面实现的这种方法不起作用的原因使我无法理解。
关于我可能错过的任何建议吗?
就我而言,简单的解决方法-e.preventDefault必须删除。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.