0

我正在使用requiredFieldValidator我的TextEditor. 使用onValidationError下面给出的事件,我将单元格的标题属性设置为错误消息,以便工具提示将显示为“这是必填字段”。

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); 

成功地,当出现一些验证错误时会显示工具提示。但问题是当给同一个单元格一个正确的值并且验证成功时,之前的工具提示会再次出现。

如何在成功验证时删除该工具提示?

4

4 回答 4

0

我找到了解决此问题的方法,并且效果很好。

通过浏览 slick.grid.js 代码,我了解到只有当验证器的“有效”值为 false 时才会触发 OnValidationError 事件。

我的想法是在验证器被调用时触发 onValidationError 事件,即验证成功和失败,并检查“有效”值并根据该值处理工具提示。

脚步:

  1. 在 slick.grid.js 中,当验证器的“有效”也为真时,我添加了 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' 的值。如果为真,则表示验证成功并删除工具提示,即删除该节点的标题属性。如果 'valid' 为 false,则表示验证失败并添加 tooltip.ie 将 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", "");
        }

    });

希望这个解决方案能帮助其他人解决这个问题。

学习愉快!!!

于 2012-06-14T03:03:13.550 回答
0

实现这一点的更合适的方法是订阅onBeforeCellEditorDestroy事件并清除那里的状态(即清除工具提示)。

于 2013-04-20T09:51:12.467 回答
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
        });
于 2013-04-12T13:09:05.380 回答
0

我无法确定 中的当前单元格OnBeforeCellEditorDestroy,所以我只是清除了onCellChange之前触发的标题onValidationError。例如:

grid.onCellChange.subscribe(function (e, args) {
    $(grid.getCellNode(args.row, args.cell)).children("input").attr( "title", "");
});
于 2014-02-21T20:18:10.573 回答