编辑: 这实际上是Knockout,JQuery 1.10.2并试图覆盖jquery.unobtrusivevalidation ErrorPlacement函数...停止表单元素上的提交绑定工作。
如果我使用JQuery 1.8.2运行相同的代码,那么只需将我的JQuery文件更改为1.10.2我的提交函数停止触发...有没有人看到类似的内容?
我将发布尽可能多的相关代码以防万一,但是主要的一点是,使用jquery 1.8.2并且没有任何其他更改jcery 1.10.2,commitForm与表单提交事件绑定得非常好不接触submitForm(使用断点和alert()语句进行测试)。 所有其他淘汰赛绑定似乎仍然有效。
请帮忙。感谢。
<html>
<head>
<script src="/Content/Scripts/jquery-1.10.2.js"></script>
<script src="/Content/Scripts/jquery-ui/jquery-ui.js"></script>
<script src="/Content/Scripts/jquery-ui-timepicker-addon.js"></script>
<script src="/Content/Scripts/knockout-2.3.0.js"></script>
<script src="/Content/Scripts/knockout-helpers.js"></script>
<script src="/Content/Scripts/knockout.mapping-latest.js"></script>
<script src="/Content/Scripts/underscore.js"></script>
<script src="/Content/Scripts/date.js"></script>
<script src="/Content/Scripts/global.js"></script>
<script src="/Content/Scripts/jquery.blockUI.js"></script>
<script src="/Content/Scripts/jquery.dirtyform.js"></script>
<script src="/Content/Scripts/bootstrap/bootstrap.js"></script>
<script src="/Content/Scripts/sessionTimer.js"></script>
<script src="/Content/Scripts/jquery.livequery.js"></script>
<script src="/Content/Scripts/Ecdm/myCode.js"></script>
</head>
<form action="/Apply" data-bind="submit: submitForm" id="myApplicationForm" method="post">
<!-- html form stuff -->
</form>
<script>
var view;
$(function() {
view = new ModelView({
formSelector: '#myForm',
});
// Base JS model
var model =
{
someProperty: '@Model.SomeProperty',
};
view.bind(model);
});
</script>
</html>
myCode.js:
function ModelView(params) {
var self = this;
// Default parameters
var args = $.extend({
formSelector: 'form' }, params);
this.bind = function (model) {
// Apply KO bindings
ko.applyBindings(self);
};
this.submitForm = function () {
var form = $(args.formSelector);
form.validate();
if (form.valid()) {
var referenceNumber = $('#ReferenceNumber');
if (a==b) {
showConfirmation();
return false;
}
g_showWait("Please wait...");
return true;
}
return false;
}
}
答案 0 :(得分:0)
我通过使用验证声明符号解决了它,而不是直接设置验证器设置,但我不知道为什么。如果有人能解释我会很感激(我厌倦了看:)) errorPlacement已成功覆盖并在两种情况下都有效。提交淘汰赛绑定只是没有用。
而不是像这样覆盖errorPlacement函数
$("form").each(function() {
var validator = $(this).data('validator');
if (typeof validator != 'undefined') {
validator.settings.errorPlacement = $.proxy(function(error, inputElement) {
//
// do stuff with the error object
//
}, $(this));
}
});
我把它改成了这只是尝试了一切并且有效:
$("form").each(function () {
var validator = $(this).data('validator');
if (typeof validator != 'undefined') {
$(this).validate({
errorPlacement: $.proxy(function (error, inputElement) {
//
// do stuff with the error object
//
}, $(this));
}
});