Вот проблема.Подтвердить RegExp во внешнем файле .js
У меня есть сайт, который использует AJAX, в котором основная домашняя страница загружает файл home.js с основными сценариями, которые требуются для всех страниц сайта. Один из этих основных сценариев заключаются в следующем RegExp:
var datePattern = new RegExp("^([0][1-9]|[1][0-2])\/([0][1-9]|[1-2][0-9]|[3][0-1])\/([12][0-9][0-9][0-9])$");
Когда пользователь переходит на страницу (через AJAX), файл соответствующей формы проверки script.js загружается первым, который содержит следующий для проверки даты (Допустимо это значение даты элемента и корректно отображает предполагаемое значение даты):
var val=elem[i].value;
if (!datePattern.test(val)) {
elem[i].style.background="#FF0000";
errno++;
}
Я прошел как сценарий и HTML с помощью валидатора и все, кажется, в порядке.
Все работает отлично в FF. Однако в IE. Я получаю сообщение о том, что datePattern не определен. Что происходит с объявлением datePattern в файле home.js, которое мне нужно изменить, чтобы оно было доступно глобально для других js-файлов?
Спасибо!
Вы не используете библиотеку Javascript, которая уже имеет проверку даты? – fge
Файл, вероятно, не загружается, когда вы пытаетесь получить доступ к этой функции. IE действительно любит setTimeout или defer – mplungjan
Нет, я не пользуюсь JS Library, хотя это стоит посмотреть. Что касается загружаемого файла, да, он действительно загружен. Скрипт из файла home.js работает безупречно, и скрипт, содержащий функцию $ datePattern.test, отлично работает ... он просто регистрирует datePattern как Undefined. (Есть другие шаги проверки, которые происходят до и после этого, работают нормально, если я перехожу на datePattern.) – Max