如何构建和提交适用于所有现代浏览器的表单?

时间:2012-02-08 16:22:33

标签: javascript forms firefox cross-browser form-submit

我正在使用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 个答案:

答案 0 :(得分:3)

您必须先将表单附加到文档中,然后才能提交 如果您不想更改UI,可以将样式应用于表单。

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

附注:您使用SomeForm作为变量名称。它是一个非常有效的JavaScript变量,但是它遵守惯例。 Camel-cased变量只应用于命名构造函数,例如ArrayObjectMyClass