我有一组表单输入,需要进行交互检查、验证或二者兼备。在两种情况下,我不确定如何添加第二个功能集而不覆盖之前的赋值。
这里举一个例子。我有一个字段应该被实时验证,并且也应该被实时格式化监控。(是的,我可以将它们合并到同一个函数中,但我更喜欢将它们分开)。
这里是验证分配:
exampleField
// for live typing
.keyup($.debounce(500, debouncedValidation))
// for copy-pastes and autofills
.change(function(){
validateInput(formInValidation, $(this));
});
除此之外,我还想独立地运行一些交互式功能,如下所示:
exampleField
// for live typing
.keyup($.debounce(500, interactWithElement($(this))))
// for copy-pastes and autofills
.change(function(){
interactWithElement($(this));
});
我正在使用相同的事件,因此后者会覆盖前者。我的直觉告诉我应该有一种优雅的方式在中间添加实用函数,例如addEventListenerWithoutOverride()
,它会查找现有的事件并将它们组合起来。这是否可行?该函数的虚构输出可能类似于:
exampleField
.keyup(
$.debounce(
500,
function(){
debouncedValidation();
interactWithElement($(this));
});
)
)
.change(function(){
validateInput(formInValidation, $(this));
interactWithElement($(this));
});