Ссылка на элемент всегда равна нулю в IE8 - PullRequest
0 голосов
/ 26 января 2010

Я пытаюсь сослаться на кнопку отправки:

<input name="submit" type="submit" id="submit" tabindex="5" value="Submit" />

Попробовал это: var submit_btn = $('submit');, а также с document.getElementByID('submit'). Но это всегда оценивается в null .. Также пытался зациклить все элементы формы, чтобы достичь кнопки как lastChild, но результат всегда null. Это известная ошибка? Кроме того, когда я пытаюсь ссылаться на элемент формы по идентификатору, результат также null ..

Ответы [ 5 ]

2 голосов
/ 26 января 2010

Бьюсь об заклад, IE просто не нравится значение "submit" для свойства "id" элемента. Помните, что IE хочет использовать значение «id» в качестве имени свойства объекта «window», и он может считать «submit» зарезервированным словом. Я знаю, вы говорите, что не можете изменить значение. Если вы используете jQuery, попробуйте $('input[name=submit]')

0 голосов
/ 25 апреля 2011

Просто столкнулся с подобной проблемой IE8. Большинство элементов ввода были нулевыми внутри формы при доступе через JS. Вот разметка:

<p>
  <form styleId="districtReportForm" method="post" onsubmit="return false;">
    <input name="reportType" value="0" type="hidden"> 
    <input name="districtId" value="30001176" type="hidden">

Работало нормально во всем, кроме IE8. В IE8 после 'reportType' внутри формы не было элементов. Например, после получения формы по идентификатору form.districtId был равен нулю.

Итак, я побежал:

dojo.byId('districtReportForm').innerHTML

Чтобы узнать, что там думал IE, и он сообщил:

"<INPUT name=reportType value=0 type=hidden> </P>" 

Очевидно, IE решил закрыть отверстие <p> для меня (правда, оно не было закрыто должным образом). Удаление элемента абзаца исправило это.

0 голосов
/ 26 января 2010

Попробуйте:

$("input#submit"); 

или:

$("input[type='submit']");

Кроме того, считается плохой практикой присваивать идентификаторы, такие как «Отправить» - быть немного более информативным, например: <input id="SubmitRegistration">

Не забудьте использовать селектор # для ссылки на идентификаторы - вы не указали это выше.

Кроме того, не забудьте поместить jQuery в $(document).ready(function() {});, чтобы убедиться, что он работаетпосле того, как дом загружен.

0 голосов
/ 26 января 2010

Я полагаю, функция доллара - это библиотека прототипов? Если нет, то в JQuery вызов должен быть $('#submit').

Или вы пытаетесь сделать это прямо из тега <script>? Возможно, вам придется обернуть код в обратный вызов onLoad. Если вы этого не сделаете, ваш браузер может выполнить скрипт до полной загрузки страницы, и ваш элемент все еще может отсутствовать в DOM. Примеры:

Для прототипа:

Event.observe(window, 'load', function() {
    // your code
});

Для JQuery:

$(document).ready(function() {
    // your code
});
0 голосов
/ 26 января 2010
  • Вы уверены, что на странице есть только один элемент с идентификатором submit?
  • Можете ли вы дать элементу идентификатор, отличный от "submit"? Я не думаю, что в идентификаторах CSS должны быть какие-то зарезервированные имена, но просто чтобы убедиться.
...