Изменение порядка формы на HTML-странице - PullRequest
0 голосов
/ 08 сентября 2011

В нашем приложении мы используем document.forms[0] для доступа к форме из JavaScript.Раньше это работало нормально, пока нам не пришлось вводить другую форму перед текущей формой (в заголовке страницы).Очевидно, что теперь ни одна из наших отправленных форм не будет работать должным образом, так как она подберет форму, указанную в заголовке.

В любом случае, мы можем иметь document.forms [0] для ссылки на существующую форму.

Единственный другой вариант, который у нас есть, - ссылаться на обе формы по имени и использовать имя в JavaScript.Но так как это представляет собой значительный объем переделок, я просто подумал, может ли сообщество предложить альтернативное решение.

Чтобы уточнить: лучшим решением будет использование document.getElementById, но это то, что планируетсядля следующей основной версии.Мы бы очень хотели добавить это в текущий цикл выпуска.

Ответы [ 2 ]

2 голосов
/ 08 сентября 2011

Вы можете поместить форму, которая находится вверху страницы, внизу HTML, и использовать какой-нибудь причудливый CSS, чтобы она отображалась вверху страницы.Кроме того, вы можете использовать Javascript для определения формы в верхней части страницы после загрузки страницы, что (я думаю) приведет к тому, что исходная форма отобразится как форма [0], а верхняя форма отобразится какформа [1].Даже что-то вроде простого TopFormDiv.innerHTML = «все html вашей формы идет сюда» в body.onload может быть достаточно, конечно, вы можете сделать это намного сложнее.

Кроме того, вы можете подумать о том, чтобы «подлатать обезьяны» объекту document.Forms, чтобы document.Forms [0] возвращал форму, к которой вы хотите.Я думаю, что у вас есть код в верхней части вашей страницы, который переключает document.Forms [0] на тот, который вы хотите, чтобы он представлял, и перемещает все остальное на 1 позицию.Это должно быть сделано после загрузки документа, но прежде чем что-либо еще на странице попытается получить доступ к форме.

ОБНОВЛЕНИЕ

После некоторого начального тестирования кажется, что вызов document.forms [0] фактически просматривает текущий DOM, пока не вернет первую форму.Таким образом, даже если вы определите форму позже, после загрузки страницы, как я рекомендовал в первом абзаце, она не будет работать так, как вы ожидаете.Даже «исправление обезьяны» не работает, поскольку установка значения формы [0] в какую-либо другую форму, похоже, ничего не дает, так как формы [0] всегда возвращают первую форму в дереве DOM.Таким образом, единственный способ добиться этого - определить «верхнюю» форму внизу HTML-кода и использовать CSS для ее размещения в верхней части документа.Базовый пример того, как расположить нижнюю форму вверху страницы, см. , этот пример

1 голос
/ 08 сентября 2011

Я бы посоветовал вам немного изменить свой код и дать id каждому элементу формы, а затем использовать.

document.getElementById();

Более подробная информация включена,

http://www.javascript -coder.com / JavaScript-форма / getelementbyid-form.phtml

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...