0

フォームのクライアント側検証が失敗した後、Trinidad はエラー メッセージを表示し、失敗した入力のラベルを強調表示します。入力フィールド自体を強調表示する必要があります。どういうわけかそれを行うことは可能ですか?私が考えることができる最も絶望的な解決策は、ラベルの DOMAttrModified イベントに js イベントリスナーをアタッチすることですが、それは本当にひどいハックです。

4

1 に答える 1

0

最終的に別のハックを選択しました。ドキュメントがロードされた後、フォームを送信するためのトリニダードの関数を、検証が失敗した後にイベントをトリガーする実装に置き換えます。このフックは、すべての検証メッセージをループし、エラーのある入力の ID を探します (そして、そのスタイルを設定します)。醜いが、動作します。これは、jQuery を使用したそのアイデアの説明です (単なるスケッチであり、テストされていません)。

$(window).load(function () {
//save original function for form submit
var originalSubmit = window.submitForm;
//replace function for form submit with custom implementation that triggers some event in case of validation failure
window.submitForm = function (form, doValidate, parameters, isPartial) {
    var retval = originalSubmit(form, doValidate, parameters, isPartial);
    if (!retval) {
        $(window).trigger('failedFormValidations', [form, doValidate, parameters, isPartial]);

    }

}

//bind a listener for failed validations which performs the desired behavior
$(window).bind('failedFormValidations', function(event, form, doValidate, parameters, isPartial) {
    // reset all inputs to nonhighlighted state, then loop through all labels and hightlight inputs with error
});
}
于 2010-08-11T15:14:04.830 に答える