I провел некоторые исследования и провел несколько тестов. Казалось, проблема в том, что IE8 не будет обновлять статус, если элемент не будет специально размыт до того, как следующий элемент получит фокус. Я протестировал целевое исправление IE8, но для этого нужен javascript. Это зависит от вас, если компромисс стоит того:
CSS:
/* Add a 'normal' selector for IE8, leave sibling selector for other browsers */
.lineItem.focus .hint,
.textbox:focus + .hint {color: Red;}
JS :
<!--[if IE 8]>
<script type="text/javascript" charset="utf-8">
var els = document.getElementsByTagName('input');
for(var i = 0; i < els.length; i++){
var el = els[i];
if(!/textbox/.test(el.className)) continue;
el.attachEvent('onblur', function(){
event.srcElement.parentNode.className = event.srcElement.parentNode.className.replace(' focus','');
});
el.attachEvent('onfocus', function(){
event.srcElement.parentNode.className += ' focus';
});
};
</script>
<![endif]-->
Вставьте этот скрипт перед закрывающим тегом тела или после последнего элемента input.textbox
. Он будет просматривать теги, будут обрабатываться только те, которые содержат класс textbox
. Он просто добавляет класс к родительскому элементу и удаляет класс, когда элемент input
размыт. Используя стандартный родительский / дочерний селектор, мы заставляем IE8 делать то, что нужно.