在使用 Knockout-Validation 进行分组验证时,如果你想显示错误属性名(即哪个字段验证失败),可以通过以下步骤实现:
首先,定义你的 ViewModel 并应用 Knockout-Validation 的验证规则。
function MyViewModel() {
this.firstName = ko.observable("").extend({ required: true });
this.lastName = ko.observable("").extend({ required: true });
this.email = ko.observable("").extend({ required: true, email: true });
// 分组验证
this.errors = ko.validation.group(this);
}
var viewModel = new MyViewModel();
ko.applyBindings(viewModel);
在 HTML 中,你可以通过 errors
对象来显示错误信息。errors
是一个包含所有验证错误的数组,每个错误对象都包含了错误信息、属性名等信息。
<div>
<input data-bind="value: firstName" placeholder="First Name" />
<input data-bind="value: lastName" placeholder="Last Name" />
<input data-bind="value: email" placeholder="Email" />
</div>
<button data-bind="click: function() { errors.showAllMessages(); }">Validate</button>
<!-- 显示错误信息 -->
<div data-bind="foreach: errors()">
<div>
<span data-bind="text: $data.message"></span> (Field: <span data-bind="text: $data.property"></span>)
</div>
</div>
errors.showAllMessages()
:这个方法会强制显示所有验证错误信息。errors()
:返回一个包含所有验证错误的数组。$data.message
:显示错误的具体信息。$data.property
:显示错误的属性名(即哪个字段验证失败)。如果你想自定义错误信息,可以在定义验证规则时指定 message
参数。
this.firstName = ko.observable("").extend({ required: { message: "First Name is required" } });
this.lastName = ko.observable("").extend({ required: { message: "Last Name is required" } });
this.email = ko.observable("").extend({ required: { message: "Email is required" }, email: { message: "Please enter a valid email address" } });
<!DOCTYPE html>
<html>
<head>
<title>Knockout-Validation Group Example</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.5.1/knockout-min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout-validation/2.0.4/knockout.validation.min.js"></script>
</head>
<body>
<div>
<input data-bind="value: firstName" placeholder="First Name" />
<input data-bind="value: lastName" placeholder="Last Name" />
<input data-bind="value: email" placeholder="Email" />
</div>
<button data-bind="click: function() { errors.showAllMessages(); }">Validate</button>
<!-- 显示错误信息 -->
<div data-bind="foreach: errors()">
<div>
<span data-bind="text: $data.message"></span> (Field: <span data-bind="text: $data.property"></span>)
</div>
</div>
<script>
function MyViewModel() {
this.firstName = ko.observable("").extend({ required: { message: "First Name is required" } });
this.lastName = ko.observable("").extend({ required: { message: "Last Name is required" } });
this.email = ko.observable("").extend({ required: { message: "Email is required" }, email: { message: "Please enter a valid email address" } });
// 分组验证
this.errors = ko.validation.group(this);
}
var viewModel = new MyViewModel();
ko.applyBindings(viewModel);
</script>
</body>
</html>
通过 ko.validation.group
和 errors
对象,你可以轻松地显示分组验证中的错误信息,并且可以自定义错误消息和显示错误属性名。