我正在尝试设置一个验证组以在按下按钮后显示错误。
我的问题是每次验证错误更改时,我都无法正确更新验证组。
在我的示例中,每次离开文本框(预期)时,我都可以正确地看到字段 observable 的 .errors 属性更新。对于验证组,文档指向调用 .showAllMessages() 或评估组本身。
我在下面创建了一个示例。我看到的行为摘要:
- 加载时,“必需”验证消息显示 (ok)
- 每当字段上的验证错误发生变化时,验证组都不会更新(grrrr)
- 一旦该字段变得完全有效,验证组将更新(ok)
- 一旦该字段在有效后变为无效,它将使用第一个验证消息进行更新,但不会像上面那样正确更新。
在示例中,我在单个字段上设置了这些验证:
- 必需的
- 最小长度:3
- 最大长度:10
- 数字
风景:
<label>Test number</label>
<input type="text" data-bind="value: myNumber"/>
<div>myNumber error: <span data-bind="text: myNumber.errors"/></div>
<div>Validation group:
<ul data-bind="foreach: validationGroup"><li data-bind="text: $data"></li></ul>
</div>
<button type="submit" class="btn" data-bind="click: testValidate">Update validation group</button>
视图模型:
var viewModel = {
myNumber: ko.observable().extend({
maxLength: 10,
number: {
message: "Please ensure that myNumber contains only numeric characters"
},
required: {
message: "myNumber is required"
},
minLength: 3
})
};
viewModel.validationGroup = ko.validation.group([viewModel.myNumber]);
viewModel.testValidate = function () {
// Try both, to be sure...
viewModel.validationGroup.showAllMessages();
viewModel.validationGroup();
};