2 回答

TA貢獻1825條經驗 獲得超4個贊
將驗證代碼放在一個命名函數中,這樣您就可以從兩個事件偵聽器中調用它。
function validate_input(el) {
const inputValue=el.value;
const validator=inputCheck(el)
if (validator) {
const valid= validator(inputValue);
borderHighlight(valid, el);
}
}
function createListener(input) {
return e => validate_input(input);
}
inputs.forEach(input=> {
input.addEventListener("input", createListener(input))
})
function borderHighlight(valid, el) {
(valid)? el.style.border='2px solid green':el.style.border='2px solid red'
}
myform.addEventListener('submit', (e) => {
e.preventDefault();
inputs.forEach(input => validate_input(input));
});

TA貢獻1842條經驗 獲得超13個贊
稍微更改表單提交偵聽器。調用從返回的函數createListener并傳遞一個假事件對象:{target: input}。
myForm.addEventListener('submit', (e)=> {
e.preventDefault()
inputs.forEach(input=> {
createListener(input)({target: input});
})
});
這樣你就不需要在createListener.
添加回答
舉報