请参阅jsfiddle,例如,删除名字字段以显示验证工具提示。在正常形式中,验证工具提示正确地定位在每个元素的右侧。但是在网格的弹出编辑器中,它仍然试图将工具提示放在元素下面,就好像它在内联编辑一样。我试过<span class="k-invalid-msg" data-for="FirstName"></span>
但它没有改变任何东西。是否有一个我缺少的设置让这个在popupeditor中工作?我想我可以手动修改.k-tooltip,但我希望有一些内置的东西可以正确处理定位,因为我不是很擅长CSS。
答案 0 :(得分:12)
正如您所发现的,当应用于标准输入时,网格的错误模板与kendo验证器提供的错误模板不同。
不幸的是,网格内部创建的验证程序不传递您可能在options对象中定义的任何errorTemplate,并且当“edit”事件触发时,验证程序已经创建并且编译了错误模板因此,为什么以您描述的方式设置errorTemplate不起作用。实际上,我认为Kendo网格应该尊重任何用户定义的errorTemplate选项,但在此之前我们必须进行一些修改。
关键是定义自定义模板并将其应用于编辑事件,但不是使用options对象,而是直接设置私有实例。不理想,但它有效:
edit: function (e) {
e.sender.editable.validatable._errorTemplate =
kendo.template($('#tooltip-template').html());
}
请参阅此更新的小提琴,了解我认为您可能希望实现的目标。
答案 1 :(得分:2)
(我会发布此评论作为评论,但还没有足够的声誉......)
我成功使用了nukefusion的解决方案。我也和jQuery的语法错误争吵了很长时间,并通过调试发现如何你定义模板很重要。特别是,似乎必须将模板写在一行而不进行任何格式化,如:
<script id="tooltip-template" type="text/x-kendo-template"><span class="k-widget k-tooltip k-tooltip-validation"><span class="k-icon k-warning"></span>#=message#</span></script>
如果您尝试使其“漂亮”并在模板中格式化html,则会出现语法错误。我不知道真正的bug在哪里,因为这种事情不应该导致错误。但确实如此,一旦我让它正常工作,我就不再担心了。