#javascript #html #cross-browser
#javascript #HTML #кроссбраузерность
Вопрос:
У меня есть 1 выпадающий список [год], 2 текстовых поля [startDate, endDate]
, всякий раз, когда пользователь выбирает год из выпадающего меню, текстовые поля startDate
должны автоматически заполняться на 01/01/ year
и endDate
в 12/31/ year
. Приведенный ниже скрипт отлично работает в Firefox, но в IE getElementById (‘ff5’).value не работает, есть предложения?
Мой скрипт:
<script>
function autoPopulateDate(value, startDt,endDt){
document.getElementById(startDt).value='01/01/' value;
document.getElementById(endDt).value='12/31/' value;
}
</script>
HTML-код:
<tr>
<td>
<select onchange="autoPopulateDate(this.value,'ff5','ff6')" size="1" name="ff4" id="ff4"><option value="">--amp;>select valueamp;<--</option><option value="2005">2005</option>
<option value="2006">2006</option>
<option value="2007">2007</option>
<option value="2008">2008</option>
<option value="ALL">ALL</option>
</select>
</td>
</tr>
<tr>
<td ><font class="rtabletext">Savings Start Date: </font></td>
<td >
<input type="text" value="" name="ff5" id="ff5" maxlength="50" size="10" class="text">
</td>
</tr>
<tr>
<td><font class="rtabletext">Savings End Date: </font></td>
<td>
<input type="text" value="" name="ff6" id="ff6" maxlength="50" size="10" class="text">
</td>
</tr>
Комментарии:
1. Да, но IE — это браузер, который мне нужно поддерживать.
2. @Rachel работает у меня в IE (8).
3. Я использую IE7, у меня нет другой страницы JavaScript, на самом деле эта функциональность необходима в инструменте создания отчетов.
4. Отлично работает в IE 7. Возможно ли, что в вашем документе есть какой-то другой элемент с идентификатором или именем «ff5»?
5. Нет, у меня нет другого элемента с идентификатором или именем как
ff5
Ответ №1:
IE [по крайней мере, некоторые версии и режимы рендеринга] хочет, чтобы вы получали доступ к участникам формы через коллекцию forms.
document.forms['someform'].elements['someelement'].value
В качестве альтернативы вы можете использовать некоторую библиотеку ajax (например http://www.asp.net/ajax ) и используйте этот метод извлечения элементов библиотеки, поскольку они обычно учитывают совместимость с браузером…
$get('element')
Комментарии:
1. @KristoferA Нет, в этом нет необходимости, код работает просто отлично. Смотрите скрипку @ mu, связанную в его комментарии к вопросу.
2. 1, Как ни странно, это сработало для меня сейчас, если я пытаюсь получить доступ с помощью document.forms[‘someform’].elements [‘someelement’].value, спасибо КристоферУ
3. @Rachel ничего странного, просто проблема совместимости с браузером. Возможно (даже вероятно), что более поздние версии IE были выровнены с другими браузерами. Другими словами, ваш исходный код может работать в IE8 / IE9 (когда находится в стандартном режиме), но не в IE7/6/5/4/3 или даже в новых браузерах, если страница отображается в режиме quirks или совместимости.
4. @Pointy Можете ли вы уточнить, какие части моего ответа вы считаете неправильными и почему?
5. @KristoferA метод «document.getElementById()» отлично работает в Internet Explorer, по крайней мере, в IE 6 и почти наверняка также в IE 5.