I've some problems getting KO and jQuery Validate plugin work together.
My model:
Parameter {
int Id;
string Name;
decimal Price;
}
And my HTML+JS:
<DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html;charset=utf-8'></meta>
<script type='text/javascript' src='js/jquery-1.8.3.min.js'></script>
<script type='text/javascript' src='js/jquery.validate.min.js'></script>
<script type='text/javascript' src='js/knockout-2.2.0.js'></script>
<script type='text/javascript' src='js/knockout.mapping-latest.js'></script>
</head>
<script type="text/javascript">
function AdminViewModel() {
var self = this;
self.parameters = ko.observableArray();
self.getParameters = function() {
// gets all parameters for the element with specified id (1)
$.getJSON('http://localhost:81/api/parameters/1', function(parameters){
ko.mapping.fromJS(parameters, {}, self.parameters);
});
}
self.save = function() {
alert('Submit!');
}
}
jQuery(function( $ ) {
var viewModel = new AdminViewModel();
ko.applyBindings(viewModel);
viewModel.getParameters();
$("#form-settings").validate({ submitHandler: viewModel.save });
});
</script>
<body>
<form id="form-settings" action="javascript:void(0);">
<!-- ko foreach: parameters() -->
<!--<p data-bind="foreach: parameters()">-->
Parameter <input class="required" type="text" data-bind="value: $data.Name" /><br />
Price <input class="required number" type="text" data-bind="value: $data.Price" /><br />
<!--</p>-->
<!-- /ko -->
<button type="submit">Save</button>
</form>
</body>
</html>
Validation is not working properly, sometimes form is submitted and page reloaded also if there are errors, sometimes error messages are displayed only for one input, what's wrong with my code?