проверьте эту скрипку:
Я пытался сделать 2 вещи:
Во-первых: не проверять, когда поле пустое. Я знаю, что есть вариант только если ... но есть ли что-нибудь попроще?
Во-вторых: мне нужно что-то для запуска проверки, когда я нажимаю на «Отправить» (если вы протестируете мою скрипку, появятся сообщения об ошибках, но не будет применяться errorClass css)
Спасибо
css:
input.error {
color: red;
border-color: red;
}
js:
ko.validation.configure({
insertMessages: false,
decorateElement: true,
errorElementClass: 'error',
messagesOnModified: false
});
function SignInViewModel() {
var self = this;
self.userName = ko.observable().extend({
required: true
});
self.password = ko.observable().extend({
required: true
});
self.errors = ko.validation.group(self);
self.login = function (e) {
if (self.errors().length == 0) {
alert('No errors');
} else {
this.errors().forEach(function(data) {
alert(data);
});
//self.errors.showAllMessages(true);
}
}
}
$(function () {
ko.applyBindings(new SignInViewModel());
});
html:
<form>
<fieldset>
<legend>User: <span data-bind='text: errors().length'></span> errors</legend>
<label>User name: <input data-bind='value: userName' type="text"/></label><br/>
<label>Password: <input data-bind='value: password' type="password"/></label>
</fieldset>
<button type="button" data-bind='click: login'>Login</button>
</form>
required
; он будет терпеть неудачу ТОЛЬКО КОГДА поле будет пустым. Поэтому, пожалуйста, поясните еще немного :) Второй вопрос можно решить, используяko.validatedObservable
в вашей группе полей и вызываяisValid()
перед отправкой. Это проверит, правильно ли заполнена форма, но также покажет существующие ошибки и добавит классы ошибок и тому подобное. См. github.com/Knockout-Contrib/Knockout-Validation#getting-started а> - person Hans Roerdinkholder   schedule 11.09.2014