2010-11-03 6 views
0

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

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

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

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

+0

Если вы остановились в точке останова, вы можете использовать окно «Часы» в консоли IE, чтобы посмотреть на свойства объекта. –

+0

Вы используете http://tetlaw.id.au/view/javascript/really-easy-field-validation? Если нет, тогда рассмотрите это, это избавит вас от необходимости изобретать другое колесо. – clockworkgeek

ответ

0

Если вы все еще не поняли, вот альтернатива. Классифицировать все элементы, как, например:

<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; } 
Смежные вопросы