Tôi đang sử dụng plugin xác nhận loại trực tiếp sau đây: https://github.com/Knockout-Contrib/Knockout-ValidationKnockout Validation: làm thế nào để xác nhận các lĩnh vực trên nút nhấp chuột, không phải trên sự thay đổi đầu vào
Tôi muốn xác nhận các lĩnh vực của tôi khi tôi nhấp vào nút "Gửi", không phải lúc nào tôi cũng thay đổi giá trị của đầu vào. Làm thế nào tôi có thể làm điều đó?
Javascript:
ko.validation.init({
insertMessages:false,
messagesOnModified:false,
decorateElement: true,
errorElementClass: 'wrong-field'
}, true);
var viewModel = {
firstName: ko.observable().extend({minLength: 2, maxLength: 10}),
lastName: ko.observable().extend({required: true}),
age: ko.observable().extend({min: 1, max: 100}),
submit: function() {
if (viewModel.errors().length === 0) {
alert('Thank you.');
}
else {
alert('Please check your submission.');
viewModel.errors.showAllMessages();
}
},
};
viewModel.errors = ko.validation.group(viewModel);
ko.applyBindings(viewModel);
HTML:
<fieldset>
<div class="row" data-bind="validationElement: firstName">
<label>First name:</label>
<input type="text" data-bind="textInput: firstName"/>
</div>
<div class="row" data-bind="validationElement: lastName">
<label>Last name:</label>
<input data-bind="value: lastName"/>
</div>
<div class="row">
<div class="row">
<label>Age:</label>
<input data-bind="value: age" required="required"/>
</div>
</div>
</fieldset>
<fieldset>
<button type="button" data-bind='click: submit'>Submit</button>
</fieldset>
này được jsfiddle tôi: http://jsfiddle.net/xristo91/KHFn8/6464/
jsfiddle của bạn dường như làm việc theo quy định - Tôi nghĩ rằng bạn chỉ cần bỏ lỡ một số 'yêu cầu: true' – Carsten
Thật không may điều này là không đủ: (Tôi muốn làm xác nhận của tôi và để ràng buộc các lớp lỗi trên gửi nhấp chuột, không phải trên thay đổi trực tiếp –
cũng sau đó chỉ cần di chuyển logic bên trong handler- bấm- chức năng và làm điều đó bằng tay – Carsten