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

これを実装するより適切な方法は、onBeforeCellEditorDestroyイベントをサブスクライブし、そこで状態をクリーンアップする (つまり、ツールチップをクリアする) ことです。

于 2013-04-20T09:51:12.467 に答える
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 に答える
0

この問題の解決策を見つけましたが、問題なく動作します。

slick.grid.js コードを調べてみると、バリデーターからの「有効な」値が false の場合にのみ OnValidationError イベントがトリガーされることがわかりました。

私の考えは、バリデーターが呼び出されるたびに、つまり検証の成功と失敗の両方で onValidationError イベントを発生させ、「有効な」値をチェックし、その値に従ってツールチップを処理することでした。

手順:

  1. slick.grid.js で、validator からの「valid」も true の場合の 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 の場合、検証が成功したことを意味し、ツールチップを削除します。つまり、そのノードのタイトル属性を削除します。'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 に答える