Как создать и отправить форму, которая работает во всех современных браузерах? - PullRequest
0 голосов
/ 08 февраля 2012

Я использую JavaScript для отправки формы, которую я делаю с нуля. Код ниже работает в Chrome, но не в Firefox или IE. Как я могу создать и отправить форму, чтобы она работала во всех браузерах?

function someFunction(){
    var SomeForm = document.createElement("form");
    addInputFieldToForm("SpecialName_SortField","UpdateDate",SomeForm);
    addInputFieldToForm("SpecialName_SortOrder","false",SomeForm);
    addInputFieldToForm("Operation","Search",SomeForm);

    SomeForm.action = "<%=link("direct", "WorkspaceDisplay") %>"; // assume this URL is valid (it is).
    SomeForm.method = "post";
    SomeForm.target = "_top";
    SomeForm.submit();
}

//EDIT: Added this function to the question just so there's less mystery (not because it matters, really)
function addInputFieldToForm(elementName, elementValue, theForm) {
    var inputElement = document.createElement("input");
    inputElement.name = elementName;
    inputElement.value = elementValue;
    inputElement.id = elementName;
    theForm.appendChild(inputElement);
}

1 Ответ

3 голосов
/ 08 февраля 2012

Вы должны добавить форму в документ, прежде чем она может быть отправлена.Если вы не хотите изменять пользовательский интерфейс, вы можете применить стиль к форме.

var SomeForm = document.createElement("form");
SomeForm.style.display = "none";             // <-- Invisible form
document.body.appendChild(SomeForm);         // <-- Append <form> to body
// Rest of code ...

Примечание: вы используете SomeForm в качестве имени переменной.Это совершенно допустимая переменная JavaScript, но с соблюдением соглашений.Переменные в верблюде должны использоваться только для имен конструкторов, например, Array, Object, MyClass.

...