На этом есть несколько вопросов/ответов, здесь и здесь и в другом месте, но все они кажутся специфичными для JQuery и, похоже, не применимы к этому (например, я НЕ, создавая новый объект Form, это существующая форма в документе. Также я НЕ, используя JQuery вообще).
У меня есть форма, которая должна быть изменена перед отправкой по соображениям совместимости с IE7. Мне нужно удалить все теги BUTTON
из моей формы, а затем добавить скрытое поле, но это все в существующей форме на существующей странице HTML. Этот код работает правильно в IE и Chrome, но не работает в Firefox (версии 23 и 24 оба протестированы).
buttonClickFunction(formName, buttonObject) {
var formObject = document.forms[formName];
var i = 0;
// Strip out BUTTON objects
for (i=0;i<formObject.length;i++) {
if (formObject[i].tagName === 'BUTTON') {
formObject[i].parentNode.removeChild(formObject[i]);
i--;
}
}
// Create new field
var newField = document.createElement('input');
newField.type = 'hidden';
newField.id=buttonObject.id;
newField.name = buttonObject.name;
if (buttonObject.attributes['value'] != null) {
newField.value = buttonObject.attributes['value'].value;
} else {
newField.value = buttonObject.value;
}
// Submit form
formObject.appendChild(newField);
document.forms[formName].appendChild(newField);
document.forms[formName].submit();
}
В дополнение к document.forms[formName].submit()
я также попробовал formObject.submit()
- оба работают в Chrome, но оба не работают в Firefox. Я не понимаю, почему это не сработало - я проследил через JS и наблюдал за тем, что document.forms[formName].submit()
выполняется - исключение не появляется, но ничего не происходит на сервере.
Может ли кто-нибудь определить, почему Firefox не будет отправлять эту форму, и как я могу ее исправить?