Hallo Forum.
Kurz zur Erklärung was ich beabsichtige:
Ich habe eine Seite mit einem Formular und verschiedenen INPUT-Elementenm (Textfelder, Checkboxen, Selectboxen). In der Seite ist ein IFrame eingebettet, der die Aufgabe hat, die aktuelle Auswahl abzuspeichern. Dazu werden beim Submit des IFrames alle Elemente des Formulars kopiert und in das Formular des IFrames gehängt.
Das Problem ist nun, dass die ganze Geschichte wunderbar funktioniert, solange Firefox oder IE8 zum Einsatz kommen. IE7 habe ich nicht getestet, aber ich vermute, dass es mit diesem ebenfalls funktioniert.
Die Funktion saveData wird beim Submit aufgerufen, woraufhin die Parameter dynamisch in das Formular des IFrame kopiert werden.
function saveData()
{
SetChangedFlag(false);
appendDynamicParams();
if( document.getElementById("ID").value != "null" &&
document.getElementById("ID").value != "0" )
{
DoCommand("SAVE");
}
else
{
DoCommand("NEW");
}
}
function appendDynamicParams()
{
var elements = parent.document.forms['form1'].elements;
for( var i=0; i<elements.length; i++ )
{
if( elements[i].name != 'COMMAND' &&
elements[i].name != 'ID' &&
elements[i].name != 'LSTUSERS' &&
elements[i].name != 'CKALLPERSONS' &&
elements[i].name != 'VAPPLI' )
{
addInputElement(elements[i]);
}
}
}
function addInputElement(p_element)
{
var objInput = document.createElement(p_element.nodeName);
objInput.name = 'PARAM_' + p_element.name;
if( p_element.id )
{
objInput.id = 'PARAM_' + p_element.id;
}
objInput.disabled = false;
objInput.style.visibility = 'hidden';
objInput.style.display = 'none';
if( p_element.nodeName.toLowerCase() == 'select' )
{
objInput.multiple = p_element.multiple;
if( p_element.options )
{
for( var i=0; i<p_element.options.length; i++ )
{
if( p_element.multiple || p_element.options[i].selected )
{
var strText = p_element.options[i].text;
var strValue = '(' + p_element.options[i].value + '):(' + strText + ')';
objInput.options[i] = new Option(strText, strValue, p_element.options[i].defaultSelected, true);
}
}
}
}
else if( p_element.nodeName.toLowerCase() == 'input' )
{
objInput.type = 'text'; // submit all input elements as plain text
if( p_element.type.toLowerCase() == 'checkbox' )
{
objInput.value = p_element.checked;
}
else
{
objInput.value = p_element.value;
}
}
if( p_element.type.toLowerCase() != 'radio' || p_element.checked )
{
// append input to form
document.form1.appendChild(objInput);
}
}
Das Seltsame an der Sache ist nun, dass ich keinen Script-Fehler bekomme. Der Code wird fehlerfrei ausgeführt, scheint aber keinen Einfluss zu haben. Ich habe auch bereits versucht, mit setTimeout zu arbeitet - ohne Erfolg. Hat jemand Erfahrungen mit ähnlichen Effekten gemacht oder sieht jemand einen groben Fehler in dem ganzen Code?
Danke schon mal,
Sebastian