0
表單失敗的客戶端驗證表單Trinidad顯示錯誤消息並突出顯示標籤失敗的輸入。我需要突出顯示輸入字段本身。是否有可能做到這一點?我能想到的最令人絕望的解決方案是在標籤上的DOMAttrModified事件上附加js事件監聽器,但它確實是一個非常糟糕的黑客攻擊。如何使用Trinidad(JSF)突出顯示驗證錯誤的輸入字段?
表單失敗的客戶端驗證表單Trinidad顯示錯誤消息並突出顯示標籤失敗的輸入。我需要突出顯示輸入字段本身。是否有可能做到這一點?我能想到的最令人絕望的解決方案是在標籤上的DOMAttrModified事件上附加js事件監聽器,但它確實是一個非常糟糕的黑客攻擊。如何使用Trinidad(JSF)突出顯示驗證錯誤的輸入字段?
我們終於選擇了另一個黑客。加載文檔後,我們替換了特立尼達提交表單的函數,並在驗證失敗後觸發一個事件,然後這個鉤子循環遍歷所有驗證消息,尋找具有錯誤的輸入ID(並設置它的樣式)。醜陋,但工作。這是使用jQuery(只是一個草圖,未經測試)的想法ilustration:
$(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
});
}