Javascript 为模糊事件创建事件处理程序
尝试创建一个模糊事件,该事件使用事件对象的target属性获取事件处于活动状态的输入元素。我在最底层添加了我认为正确的代码,但在不破坏第一部分的情况下很难实现它 还试图将Javascript 为模糊事件创建事件处理程序,javascript,event-handling,blur,Javascript,Event Handling,Blur,尝试创建一个模糊事件,该事件使用事件对象的target属性获取事件处于活动状态的输入元素。我在最底层添加了我认为正确的代码,但在不破坏第一部分的情况下很难实现它 还试图将放入外部Javascript文件中,但当我尝试时,它不起作用。不确定HTML文件中是否有依赖于它的内容 <!DOCTYPE html> <html> <body> <form action="/action_page.php"> <input type="text" n
放入外部Javascript文件中,但当我尝试时,它不起作用。不确定HTML文件中是否有依赖于它的内容
<!DOCTYPE html>
<html>
<body>
<form action="/action_page.php">
<input type="text" name="username" value="Username" minLength="6"
maxlength="10" required>
<br><br>
<input type="text" name="password" value="Password" minLength="8" maxlength="15" required>
<br><br>
<input type="submit" value="Submit" onclick="function()">
</form>
<script>
document.addEventListener("DOMContentLoaded", function() {
var textElements = [...document.getElementsByTagName('input')];
var listen = function(item, index) {
item.addEventListener('keyup', function(ev){
if (event.target.validity.valid) {
item.style.border = "solid green 2px";
item.style.boxShadow = "0 0 5px green";
} else {
item.style.border = "solid red 2px";
item.style.boxShadow = "0 0 5px red";
}
})
}
textElements.forEach(listen);
});
form.addEventListener('blur', function( event ) {
event.target.style.border = "solid white 2px";
event.target.style.boxShadow = "0 0 5px white";
}, true);
</script>
</body>
</html>
document.addEventListener(“DOMContentLoaded”,function()){
var textElements=[…document.getElementsByTagName('input');
var listen=函数(项、索引){
项目.添加的EventListener('keyup',功能(ev){
if(event.target.validity.valid){
item.style.border=“纯绿2px”;
item.style.boxShadow=“0 5px绿色”;
}否则{
item.style.border=“纯红2px”;
item.style.boxShadow=“0 0 5px红色”;
}
})
}
textElements.forEach(监听);
});
form.addEventListener('blur',函数(事件){
event.target.style.border=“纯白2px”;
event.target.style.boxShadow=“0 0 5px白色”;
},对);
我删除了很多其他代码,因为这不是问题的一部分
在气泡出现时切换到focusout
事件
您可以调整匹配项
过滤器以满足您的需要
我还将演示的白色
改为红色
,因为它没有显示:)
document.addEventListener('focusout',(e)=>{
console.log(如target);
if(例如target.matches('input')){
e、 target.style.border=“纯红2px”;
e、 target.style.boxShadow=“0 5px红色”;
}
});代码>
我不确定自己是否理解正确,但在我看来,问题是在分配模糊事件处理程序时,表单
元素没有定义:
document.addEventListener(“DOMContentLoaded”,function()){
var textElements=[…document.getElementsByTagName('input');
var listen=函数(项、索引){
项目.添加的EventListener('keyup',功能(ev){
if(event.target.validity.valid){
item.style.border=“纯绿2px”;
item.style.boxShadow=“0 5px绿色”;
}否则{
item.style.border=“纯红2px”;
item.style.boxShadow=“0 0 5px红色”;
}
})
}
textElements.forEach(监听);
});
document.querySelector('form')。addEventListener('blur',函数(事件){
event.target.style.border=“纯白2px”;
event.target.style.boxShadow=“0 0 5px白色”;
},对)代码>