Chr*_*lls 5 javascript knockout-2.0 knockout.js knockout-validation
将值绑定到下拉列表并使用敲除验证时,即使我的敲除验证设置说明,也会始终显示错误消息messagesOnModified: true.
HTML
<input type="text" data-bind="value: Name" />
<br />
<select data-bind="value: State">
<option value="">Select a state...</option>
<option value="NY">New York</option>
<option value="NJ">New Jersey</option>
</select>
Run Code Online (Sandbox Code Playgroud)
JS
var ViewModel = function () {
var self = this;
self.Name = ko.observable().extend({
required: { message: "You must enter a name." }
});
self.State = ko.observable().extend({
required: { message: "You must select a state." }
});
self.Errors = ko.validation.group(self);
}
ko.validation.configure({
messagesOnModified: true,
insertMessages: true
});
ko.applyBindings(new ViewModel(), document.body);
Run Code Online (Sandbox Code Playgroud)
并且jsfiddle显示文本框和下拉列表之间的区别:http://jsfiddle.net/f7v4m/
文本框显示正确的行为,错误消息仅在修改值后显示.
为什么显示下拉列表的错误消息?
nem*_*esv 12
要删除"initlial"验证消息,您需要State使用空字符串初始化属性:
self.State = ko.observable("").extend({
required: { message: "You must select a state." }
});
Run Code Online (Sandbox Code Playgroud)
演示JSFiddle.
您需要执行此操作,因为在编写 ko.observable()时将初始化,undefined但是当knockout评估value绑定时,它将设置State为当前选定的空选项值,即空字符串.
但是,undefined它不等于空字符串,它会使您的属性"脏"并触发验证消息,因为验证插件认为您的属性已被修改.
| 归档时间: |
|
| 查看次数: |
7248 次 |
| 最近记录: |