Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.04.2014, 04:38
Новичок на форуме
Отправить личное сообщение для AlexSpl Посмотреть профиль Найти все сообщения от AlexSpl
 
Регистрация: 09.04.2014
Сообщений: 3

Почему не работает 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'а внутрь формы)?
Ответить с цитированием
  #2 (permalink)  
Старый 09.04.2014, 07:48
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от AlexSpl
Подскажите, пожалуйста, как сделать так, чтобы работало (без помещения input'а внутрь формы)?
Технически - никак. IE10 не поддерживает атрибут form (а также formmethod, formaction и тд), который является частью HTML5 стандарта.

Теоретически можно написать костыль на js, который будет ловить событие отправки формы и временно клонировать в нее поля, которые привязаны к форме через атрибут form. Может даже есть готовый polyfill. Но что-то я не нашел. Верней нашел, но он громоздкий: webshims
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #3 (permalink)  
Старый 10.04.2014, 03:26
Новичок на форуме
Отправить личное сообщение для AlexSpl Посмотреть профиль Найти все сообщения от AlexSpl
 
Регистрация: 09.04.2014
Сообщений: 3

Это плохо, придётся вычеркнуть IE из списка поддерживаемых.

У меня на странице около 400 input'ов и их число будет расти. Есть кнопка submit, которая отправляет только те значения, которые были изменены. Для этого на onchange висит функция, которая прописывает изменённым input'ам атрибут form (изначально этого атрибута input'ы не имеют). Таким образом отсылается только нужная информация.

Может всё-таки как-то можно в IE сделать, чтобы отсылались только изменённые значения input'ов? Может быть, можно по onchange добавлять input'ы в форму с помощью appendChild()?

Последний раз редактировалось AlexSpl, 10.04.2014 в 03:37.
Ответить с цитированием
  #4 (permalink)  
Старый 10.04.2014, 04:22
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,588

AlexSpl, можно.
Раз уж вы всё равно проходите по нужным input перед отправкой, то ничего не мешает сделать:
form.appendChild(input.cloneNode(true)).hidden = true;
__________________
29375, 35
Ответить с цитированием
  #5 (permalink)  
Старый 10.04.2014, 05:50
Новичок на форуме
Отправить личное сообщение для AlexSpl Посмотреть профиль Найти все сообщения от AlexSpl
 
Регистрация: 09.04.2014
Сообщений: 3

Спасибо. Без атрибута form сложно получается. Дело в том, что input'ы создаются и удаляются динамически, так что, похоже, придётся при удалении оригинала удалять также и его клон в форме.
Ответить с цитированием
  #6 (permalink)  
Старый 10.04.2014, 05:53
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,588

AlexSpl, собирать в один контейнер внутри form перед отправкой и удалять оный сразу после.
__________________
29375, 35
Ответить с цитированием
  #7 (permalink)  
Старый 10.04.2014, 21:41
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Полагаю, что вы что-то делаете не так, раз не можете обойтись без атрибута form.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Песочница не работает в IE10 GuardCat Сайт Javascript.ru 3 25.05.2013 22:35
Почему не работает такой обработчик? Sirius-jack Общие вопросы Javascript 6 04.05.2013 17:26
Не пойму почему не работает код? Mukhtar Events/DOM/Window 4 29.04.2013 00:01
Почему offset().top не работает в ИЕ Afonin jQuery 2 08.07.2011 10:08
Не могу понять, почему не работает автокомпил в IE 8 gargon2008 jQuery 0 07.06.2011 11:31