【问题标题】:Tooltip of previous onValidationError event displayed even when correct values are entered in the slickgrid node即使在 slickgrid 节点中输入了正确的值,也会显示上一个 onValidationError 事件的工具提示
【发布时间】:2012-06-13 04:05:13
【问题描述】:

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

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

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

【问题讨论】:

    标签: javascript validation tooltip slickgrid


    【解决方案1】:

    我已经找到了解决这个问题的方法,而且效果很好。

    通过 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”的值。如果为真,则表示验证成功并删除工具提示,即删除 该节点的标题属性。如果“有效”为假,则意味着 验证失败并添加工具提示。即将标题属性设置为 错误信息。通过这样做,前一个的工具提示 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", "");
            }
    
        });
    

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

    学习愉快!!!

    【讨论】:

      【解决方案2】:

      而不是编辑光滑的网格 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
              });
      

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

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

          grid.onCellChange.subscribe(function (e, args) {
              $(grid.getCellNode(args.row, args.cell)).children("input").attr( "title", "");
          });
          

          【讨论】:

            猜你喜欢
            • 2011-07-22
            • 1970-01-01
            • 1970-01-01
            • 2012-06-18
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-08-28
            相关资源
            最近更新 更多