2012-02-08 3 views
0

J'utilise JavaScript pour soumettre un formulaire que je fais de toutes pièces. Le code ci-dessous fonctionne dans Chrome, mais pas dans Firefox ou IE. Comment puis-je créer et soumettre un formulaire et le faire fonctionner dans tous les navigateurs?Comment créer et soumettre un formulaire qui fonctionne dans tous les navigateurs modernes?

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

Que fait "addInputFieldToForm"? Ce serait probablement le code d'intérêt. Ce que vous essayez de faire est assez commun et non sensible au navigateur, ou du moins il ne devrait pas l'être. – Pointy

+0

utilisez-vous un framework js? vous devriez si vous voulez créer un formulaire compatible avec tous les navigateurs. de toute façon, qu'est-ce qui ne fonctionne pas exactement? pouvez-vous fournir des messages d'erreur de firebug? – maialithar

+0

La partie "ne fonctionne pas" est juste que le formulaire ne publie pas. Les journaux du serveur n'ont pas bougé. Le JavaScript était apparemment en cours d'exécution, mais "SomeForm.sumbit();" n'a pas soumis le formulaire. Le problème a été abordé dans la réponse de Rob W, ci-dessous. – Dale

Répondre

3

Vous devez ajouter le formulaire au document avant de pouvoir l'envoyer.
Si vous ne souhaitez pas modifier l'interface utilisateur, vous pouvez appliquer un style au formulaire.

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

Remarque: Vous utilisez SomeForm comme nom de variable. C'est une variable JavaScript parfaitement valide, mais agaist les conventions. Les variables en chameau ne doivent être utilisées que pour nommer des constructeurs, par ex. Array, Object, MyClass.

+0

Merci Rob W, a travaillé comme un charme! – Dale

Questions connexes