我在requiredFieldValidator
使用TextEditor
。使用下面给出的onValidationError
事件,我将单元格的title属性设置为错误消息,以便工具提示显示为“这是必填字段”。
var handleValidationError = function(e, args) {
var validationResult = args.validationResults;
var activeCellNode = args.cellNode;
var editor = args.editor;
var errorMessage = validationResult.msg
$(activeCellNode).live('mouseover mouseout', function(event) {
if (event.type == 'mouseover') {
$(activeCellNode).attr("title", errorMessage);
} else {
$(activeCellNode).attr("title", "");
}
});
grid.onValidationError.subscribe(handleValidationError);
成功地,当出现一些验证错误时,会显示工具提示。 但问题是当同一个单元格被赋予正确的值并且验证成功时,之前的工具提示会再次出现。
如何在成功验证后删除该工具提示?
答案 0 :(得分:0)
我找到了解决此问题的方法,但效果很好。
通过浏览slick.grid.js代码,我明白只有当验证器的“有效”值为false时才会触发OnValidationError事件。
我的想法是在调用验证器时触发onValidationError事件,即验证成功和失败,并检查“有效”值并根据该值处理工具提示。
步骤:
(即)在slick.grid.js中的if(validationResults.valid)中的return语句之前添加以下给定代码
trigger(self.onValidationError, {
editor: currentEditor,
cellNode: activeCellNode,
validationResults: validationResults,
row: activeRow,
cell: activeCell,
column: column
});
2。在slickgrid的onValidationError事件处理程序中,获取参数'valid'的值。如果为true,则表示验证成功并删除工具提示,即删除 该节点的title属性。如果'valid'为false,则表示 验证失败并添加tooltip.i.e将title属性设置为 错误信息。通过这样做,以前的工具提示 onValidationError不会出现在同一节点上。代码如下 如下:
grid.onValidationError.subscribe(function(e, args) {
var validationResult = args.validationResults;
var activeCellNode = args.cellNode;
var editor = args.editor;
var errorMessage = validationResult.msg;
var valid_result = validationResult.valid;
if (!valid_result) {
$(activeCellNode).attr("title", errorMessage);
}
else {
$(activeCellNode).attr("title", "");
}
});
希望此解决方案可以帮助其他人解决此问题。
快乐学习!!!
答案 1 :(得分:0)
不是编辑光滑的网格js - 我已经提交了此更改请求 - 同时您可以订阅以下事件以删除先前的验证显示:
grid.OnCellChange.Subscribe(delegate(EventData e, object a)
{
// Hide tooltip
});
grid.OnActiveCellChanged.Subscribe(delegate(EventData e, object a)
{
// Hide tooltip
});
grid.OnBeforeCellEditorDestroy.Subscribe(delegate(EventData e, object a)
{
// Hide tooltip
});
答案 2 :(得分:0)
更实际的方法是订阅onBeforeCellEditorDestroy
事件并清理状态(即清除工具提示)。
答案 3 :(得分:0)
我无法确定OnBeforeCellEditorDestroy
中的当前单元格,因此我只清除onCellChange
中的标题,该标题在onValidationError
之前触发。例如:
grid.onCellChange.subscribe(function (e, args) {
$(grid.getCellNode(args.row, args.cell)).children("input").attr( "title", "");
});