Проблема выбора прототипа IE 8

У меня есть класс проверки, который использует следующий селектор CSS (Prototype 1.6.1):

$$('*[class*=validate]')

Идея в том, что у меня есть различные имена классов для элементов, которые начинаются с «проверки», то есть «проверки-числовое» или «проверять-url». Итак, я хотел бы получить любой элемент со словом «проверка» в атрибуте класса.

Он работает практически в любом другом браузере, включая IE 6 и 7. В IE 8 он не выбирает правильные элементы. Я попытался выполнить некоторую отладку в инструментах разработчика IE, но консоль, при всей своей мудрости, выводит только {...} для массивов и объектов. Что-то мне не хватает? Да, это селектор CSS3, но я думал, что он все еще реализован в Prototype, и 6 и 7 оба работали с ним.


person polygone    schedule 03.11.2010    source источник
comment
если вы остановились в точке останова, вы можете использовать окно Watch в консоли IE для просмотра свойств объекта.   -  person Dan Davies Brackett    schedule 03.11.2010
comment
Вы используете tetlaw.id.au/view/javascript/really-easy? -field-validation? В противном случае подумайте об этом, это избавит вас от необходимости изобретать другое колесо.   -  person clockworkgeek    schedule 04.11.2010


Ответы (1)


Если вы все еще не догадались, вот альтернатива. Классифицируйте все свои элементы как таковые:

<div class="validate numeric">foo</div>
<div class="validate url">bar</div>
<div class="validate email">world</div>

Тогда это обязательно будет работать в IE8:

$$('.validate');

Я предполагаю, что вы пишете код для проверки формы, и это могут быть ошибки. CSS для моей схемы будет

.validate { color: red }
.numeric { margin: 1px }
.url { margin: 2px; }
.email { padding: 3px; }

В то время как ваша схема CSS не будет модульной, что затрудняет ее поддержку по мере добавления все большего количества типов ошибок.

.validate_numeric,
.validate_url,
.validate_email {
 color: red;
}

.validate_numeric { margin: 1px }
.validate_url { margin: 2px; }
.validate_email { padding: 3px; }
person JoJo    schedule 06.01.2011