Почему не работает input вне формы в IE10?
Есть код с проблемой. Суть проблемы кратко:
<html> <head> </head> <body> <form id="send" method="POST" action="addphone.php"> <input type="submit" name="__submit" /> </form> <input name="__inp" form="send" /> </body> </html> var_dump( $_POST ); возвращает: В Firefox: array(2) { ["__submit"]=> string(16) "Отправить запрос" ["__inp"]=> string(5) "22222" } В Opera: array(2) { ["__submit"]=> string(9) "Отправить" ["__inp"]=> string(5) "22222" } Т.е. всё OK. Однако в IE10 var_dump( $_POST ); возвращает: array(1) { ["__submit"]=> string(14) "Подача запроса" } Т.е. не передаёт value input'a. Подскажите, пожалуйста, как сделать так, чтобы работало (без помещения input'а внутрь формы)? |
Цитата:
Теоретически можно написать костыль на js, который будет ловить событие отправки формы и временно клонировать в нее поля, которые привязаны к форме через атрибут form. Может даже есть готовый polyfill. Но что-то я не нашел. Верней нашел, но он громоздкий: webshims |
Это плохо, придётся вычеркнуть IE из списка поддерживаемых.
У меня на странице около 400 input'ов и их число будет расти. Есть кнопка submit, которая отправляет только те значения, которые были изменены. Для этого на onchange висит функция, которая прописывает изменённым input'ам атрибут form (изначально этого атрибута input'ы не имеют). Таким образом отсылается только нужная информация. Может всё-таки как-то можно в IE сделать, чтобы отсылались только изменённые значения input'ов? Может быть, можно по onchange добавлять input'ы в форму с помощью appendChild()? |
AlexSpl, можно.
Раз уж вы всё равно проходите по нужным input перед отправкой, то ничего не мешает сделать: form.appendChild(input.cloneNode(true)).hidden = true; |
Спасибо. Без атрибута form сложно получается. Дело в том, что input'ы создаются и удаляются динамически, так что, похоже, придётся при удалении оригинала удалять также и его клон в форме.
|
AlexSpl, собирать в один контейнер внутри form перед отправкой и удалять оный сразу после.
|
Полагаю, что вы что-то делаете не так, раз не можете обойтись без атрибута form.
|
Часовой пояс GMT +3, время: 00:35. |