РЕДАКТИРОВАТЬ: Я думаю, что проблема (в любом случае в IE) заключается в том, что имя вашей функции sameBilling()
совпадает с вводом флажка name="sameBilling"
.Когда я скопировал ваш код HTML и JS, чтобы проверить его для себя, единственное изменение, которое я должен был сделать, чтобы заставить его работать, состояло в том, чтобы переименовать функцию или переименовать ввод.идентификаторы обрабатываются так, как если бы они были глобальными переменными, и поэтому возникает путаница, если у вас есть собственные переменные или функции с одинаковым именем.(У некоторых других браузеров та же проблема, потому что они пытались соответствовать тому, что делает IE.)
(Сказав это, это не объясняет, почему ваше исправление, чтобы прекратить использование .getElementById()
сработало бы.)
Метод .getElementById()
принадлежит объекту document
, например:
document.getElementById("someId")
Не имеет значения, где на странице находится элемент с id = "someId"является или является ли этот элемент дочерним по отношению к элементу формы, потому что id должен быть уникальным на странице.
Таким образом, ваш код не работает, потому что вы пытаетесь использовать .getElementById()
в элементе формы:
document.forms[0].getElementById("billingFirst").value = ...
// ^^^^^^^^^ - remove the "forms[0]." part
Вы должны изменить его на:
document.getElementById("billingFirst").value =
document.getElementById("mailingFirst").value;
// etc