私は現在、Jquery ValidationとQtipを一緒に使用して、実際の検証と、検証オプションのerrorPlacementコンポーネントを使用した検証エラー時の優れたツールチップスタイルの通知を使用した画面への情報の表示を処理しています。
現在、各viewModelには、検証とコールバックを設定および開始するための独自のカスタムメソッドがありますが、データバインディングを介して検証ルールを設定するためのカスタムバインディングを追加するなど、これを行うためのより良い方法を検討しようとしていました。別の方法ですが、それでも同じ結果が得られます(つまり、検証エラーが発生したときにerrorPlacementがトリガーされ、指定された要素のエラーを表示するようにQtipに指示します)。
自分で作成を開始する前に、オンラインでチェックしてノックアウト検証を見つけました。これは最初は素晴らしいアイデアだと思っていました。検証ロジックをviewModel内のデータに直接適用してから、Qtipを取得するためのコールバックを見つけることができました。キックインしますが、文書化されているコールバックはないようです。ライブラリは、物事の表示側だけでなく、物事の検証側のために私が望むすべてを行っているようです。ソースコードと例を調べましたが、エラーを含むオブザーバブルを提供するko.validation.group(viewModel)以外は見つかりませんでしたが、これを以前と同じように使用できるかどうかはわかりません。期待。
これが私の現在の検証がどのように行われるかの例です:
/*globals $ ko */
function SomeViewModel() {
this.SetupValidation = function () {
var formValidationOptions = {
submitHandler: self.DoSomethingWhenValid,
success: $.noop,
errorPlacement: function (error, element) {
if (!error.is(':empty'))
{ qtip.DoSomethingToDisplayValidationErrorForElement(element, error); }
else
{ qtip.DoSomethingToHideValidationErrorForElement(element); }
}
};
$(someForm).validate(formValidationOptions);
this.SetupValidationRules();
};
this.SetupValidationRules = function() {
$(someFormElement1).rules("add", { required: true, minlength: 6, maxlength: 20, alphaNumeric: true });
$(someFormElement2).rules("add", { required: true, minlength: 6, maxlength: 20 });
$(someFormElement3).rules("add", { required: true, email: true, });
};
}
現在、カスタムバインディングを追加することで検証ルールメソッドの必要性を排除できると確信しています。これにより、データバインドで検証を設定できますが、可能であれば、既存のノックアウトで同じ種類のコールバックアプローチを使用したいと思います。検証バインディング。