在表单的客户端验证失败后,Trinidad 会显示错误消息并突出显示失败输入的标签。我需要突出显示输入字段本身。有可能以某种方式做到吗?我能想到的最绝望的解决方案是在标签上的 DOMAttrModified 事件上附加 js 事件侦听器,但这确实是一个糟糕的 hack。
问问题
1487 次
1 回答
0
我们终于选择了另一个黑客。加载文档后,我们用我们的实现替换 trinidad 提交表单的函数,该实现在验证失败后触发一个事件,然后这个钩子循环遍历所有验证消息,查找有错误的输入 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 回答