失去焦点后,样式更改仍保留在 select 上?
style change remain on select after focus is lost?
我有一个页面有多个 select 下拉菜单,我想知道是否有一些简单的方法可以在元素被 selected 并失去焦点后保留样式更改 - 这样用户有一个关于他 select 编辑了哪些元素的视觉线索,即我可能在每个 select 周围都有一个小的绿色边框,这不是默认的“-select-”值。我不是编码员,上面有大约 240 selects,以及其他我不习惯胡闹的代码。
我可以使用伪 类 突出显示行和 select,但想不出保留视觉提示的简单方法。
据我所知,这不能用纯 CSS 来完成。
但是你可以像这样使用JavaScript来达到同样的效果:
document.addEventListener('change', function(event){
var element = event.target;
if(element.tagName == 'SELECT'){
element.style.border = "1px solid green";
}
});
https://jsfiddle.net/xm1txLws/
更新
要检查是否再次选择了默认选项,您需要执行额外的检查(如果没有为所选选项提供值标签,则该值将成为包含文本):
document.addEventListener('change', function(event){
var element = event.target;
if(element.tagName == 'SELECT'){
element.style.border = "1px solid green";
if(element.value == '-select-'){
element.style.border = "none";
}
}
});
我有一个页面有多个 select 下拉菜单,我想知道是否有一些简单的方法可以在元素被 selected 并失去焦点后保留样式更改 - 这样用户有一个关于他 select 编辑了哪些元素的视觉线索,即我可能在每个 select 周围都有一个小的绿色边框,这不是默认的“-select-”值。我不是编码员,上面有大约 240 selects,以及其他我不习惯胡闹的代码。
我可以使用伪 类 突出显示行和 select,但想不出保留视觉提示的简单方法。
据我所知,这不能用纯 CSS 来完成。
但是你可以像这样使用JavaScript来达到同样的效果:
document.addEventListener('change', function(event){
var element = event.target;
if(element.tagName == 'SELECT'){
element.style.border = "1px solid green";
}
});
https://jsfiddle.net/xm1txLws/
更新
要检查是否再次选择了默认选项,您需要执行额外的检查(如果没有为所选选项提供值标签,则该值将成为包含文本):
document.addEventListener('change', function(event){
var element = event.target;
if(element.tagName == 'SELECT'){
element.style.border = "1px solid green";
if(element.value == '-select-'){
element.style.border = "none";
}
}
});