即使在slickgrid节点中输入了正确的值,也会显示先前onValidationError事件的工具提示

时间:2012-06-13 04:05:14

标签: javascript validation tooltip slickgrid

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

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

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

4 个答案:

答案 0 :(得分:0)

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

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

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

步骤:

  1. 在slick.grid.js中,当validator的'valid'为true时,我添加了onValidationError事件的触发器。
  2. (即)在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", "");
});