2012-02-08 3 views
0

Я использую 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); 
} 
+0

Что делает «addInputFieldToForm»? Вероятно, это будет код интереса. То, что вы пытаетесь сделать, довольно распространено, но не зависит от браузера, или, по крайней мере, этого не должно быть. – Pointy

+0

Вы используете любой js-фрейм? вы должны, если хотите создать кросс-браузерную форму с нуля. во всяком случае, что именно не работает? можете ли вы предоставить какие-либо сообщения об ошибках из firebug? – maialithar

+0

«Не работает» - это просто, что форма не публикуется. Журналы сервера не перемещались. JavaScript явно работал, но «SomeForm.sumbit();» не представили форму. Проблема была решена в ответ Роба, ниже. – Dale

ответ

3

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

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.

+0

Спасибо, Роб У, работал как шарм! – Dale

Смежные вопросы