我正在使用Aurelia Framework开发SPA。
我添加了一个EventListener来监听blur事件上的每个输入标记。
在该函数内部,我需要进行ajax调用,只有在输入标记已通过所有验证规则时才应触发该调用。
document.addEventListener('blur', function (e: any) {
if (e.target.dataset.inline && (e.target.value != e.target.defaultValue)) {
var isValidTag = e.target.tagName === 'INPUT' || e.target.tagName === 'SELECT' ? true : false,
dataObject = _self.prepareObject(e.target.dataset.inline),
isInlineAllowed = isValidTag ? (dataObject && dataObject.isAllowed ? true : false) : false;
if (isInlineAllowed) {
setTimeout(() => {
var hasError = e.target.parentElement.classList.contains("has-error");
if (hasError) {
console.log('Has Error');
}
else if (e.target.value != e.target.defaultValue) {
_self.peformAjaxCall(_self, e, dataObject);
e.target.className = e.target.className + ' highlightSuccess';
console.log('Saved');
}
}, 800);
}
else {
console.log('Not Allowed');
}
}
}, true);
注意: 我的验证规则也会触发模糊事件。
在没有任何setTimeouts的情况下,有没有其他方法可以删除以实现此目的?
由于