我没有使用Knockout Validation,而是试图找出可以做的事情.
我试图弄清楚是否有可能在出现错误时显示图标而不是错误信息到输入标签的右侧.而且,如果用户将鼠标悬停在图标上,将显示错误信息.
有没有人这样做或有一个想法如何完成这个?
谢谢.
编辑:(更详细的例子,我想做什么)
说我在我的模型中有以下几点:
var firstName = ko.observable().extend({required: true});
我的HTML:
<input data-bind="value: firstName" />
我的理解是,如果名字文本框留空,则默认情况下,文本框右侧会显示一些文本,指出该字段是必需的.
我想要理解的是如何更改右侧显示错误文本的默认行为,显示右侧的图标,当悬停在其上时,将弹出错误消息.
所以,一开始就是这样的:
<div data-bind="validationOptions: {messageTemplate: 'myCustomTemplate'}"> <input data-bind="value: firstName" /> <input data-bind="value: lastName" /> //also required </div> <div id='myCustomTemplate'> //This icon should only display when there is an error <span class="ui-icon ui-icon-alert" style="display: inline-block"/> //css/javascript would display this when user hovers over the above icon <span data-bind="validationMessage: field" /> </div>
我没有线索,如果我正在使用messageTemplate功能.我也不知道要在customTemplate中绑定文本以便为每个错误显示正确的错误消息. IOW,firstname和lastname可能有自定义错误消息.如果他们都使用相同的模板,模板如何容纳自定义错误消息?
我希望这是有道理的.
解决方法
可以显示一个图标,并在悬停时显示错误信息.
在一个项目中,我们正在做类似的事情.我们显示带有错误编号的徽章,但是我们使用decorateElement来突出显示字段和错误AsTitleOnModified,以便在悬停在输入上时显示错误.
要创建错误消息模板,您应该将模板包装在脚本标签中.它像ko template binding的模板一样工作.
在模板中,您可以通过引用“field”来访问经过验证的observable.错误消息存储在您的observable属性“error”中.
<script type="text/html" id="myCustomTemplate"> <span data-bind="if: field.isModified() && !field.isValid(),attr: { title: field.error }">X</span> </script>
我已经创造了一个小提琴来表现这一点:http://jsfiddle.net/nuDJ3/180/