我对KnockoutJs html5验证有疑问。
如果我想在页面加载时将错误消息包含在页面中,比如说我正在为我的网店做一个前端模块,我的错误消息来自标签。
在knockoutJS 2.2.1中,我可以这样做:
<span data-bind="validationMessage: firstName, text: 'Your error.'"></span>
<input data-bind='value: firstName, valueUpdate: "input"' required pattern="^[A-Za-z]{1,255}$" />
这样可以正常工作,我可以将我的errortag粘贴到html文件的html页面中。 正如这个小提琴所见。 http://jsfiddle.net/elbecita/gt228dgm/4/ 但问题是现在在knockoutjs 3.0 f.ex下运行相同的代码。错误消息将是“此字段是必需的。”
所以现在我不能在不执行.extend()的情况下覆盖自定义消息,是不是这样,我使用这个完全错误了吗?
用于说明问题的gif:http://puu.sh/kHJH3/92a2708c93.gif
我在stackoverflow上发现了一个类似的问题,有些解决方案似乎有些过分但可能有原因?
Setting error message in html with knockout validation这个没有任何可接受的答案,所以我的问题是如何在html中粘贴我的错误信息?
非常感谢任何意见,谢谢。
*(如果我错过任何信息,请让我知道,首先发布长时间潜伏者)
答案 0 :(得分:0)
验证可以有多个独立的消息,因此可以理解消息的内容是从您手中取出的。你选择他们展示的地方,但不必担心他们说什么。我可以看到您可能想拦截标准消息并将其转换为自定义消息。你可以这样做,但它没有内置到验证中(据我所知)。
viewModel.errors = ko.validation.group(viewModel);
var messageSubstitutes = {
'Invalid.': 'All letters',
'This field is required.': 'Try some letters'
};
viewModel.errMsg = ko.computed(function () {
var errs = viewModel.errors();
if (errs.length === 0) return null
var errMsg = errs[0](),
result = messageSubstitutes[errMsg];
return result;
});
并且HTML只是:
<legend data-bind="if:errMsg">Error: <span data-bind="text:errMsg"></span>
</legend>
<label>First name:
<input data-bind='value: firstName, valueUpdate: "input"' required pattern="^[A-Za-z]{1,255}$" />
</label>