Hallo Community,
heute hab ich mal ein kleines aber feines Javascript Problem.
Und zwar hab ich eine Funktion geschrieben, die mir die Inhalte aller input, select und textarea Felder auswerten soll und mir die Namen sowie deren Values in einem String zusammenfassen soll, welche ich dann via AJAX an den Server übertragen kann.
die Funktion:
Code:
/**
* Function to get the FormData
*
* @param string dataString: The Step individual params
* @return string dataString: The complete param string to submit via ajax
*/
function getFormData( dataString )
{
// First get all input datas
var input = $( 'input' );
for ( var i in input )
{
alert( 'Type: ' + input[i].type + '\n\nName: ' + input[i].name );
if ( typeof( input[i] ) == 'undefined' )
{
continue;
}
// Check for not needed vars, we do not submit them
if ( input[i].name =='send' || input[i].name == 'nextStep' || input[i].name == 'action' || input[i].name == 'cancel' || input[i].name == 'currentStep' || input[i].name == 'step' || input[i].name == 'LoadlastStep' || input[i].name == 'LoadnextStep' )
{
continue;
}
// radio buttons
if ( ( input[i].type == 'radio' ) || ( input[i].type == 'checkbox' ) )
{
// is it checked?
if ( input[i].checked )
{
var _return = performFormData( input[i].name, input[i].value );
if ( _return != '' )
{
dataString += ( ( dataString ) ? '&' : '' ) + _return;
}
}
}
else
{
if ( input[i].type != 'submit' )
{
var _return = performFormData( input[i].name, input[i].value );
if ( _return != '' )
{
dataString += ( ( dataString ) ? '&' : '' ) + _return;
}
}
}
}
// secound: select fields
input = $( 'select' );
for( var i in input )
{
if ( typeof( input[i] ) == 'undefined' )
{
continue;
}
var _return = performFormData( input[i].name, input[i].value );
if ( _return != '' )
{
dataString += ( ( dataString ) ? '&' : '' ) + _return;
}
}
// third and last: textarea fields
input = $( 'textarea' );
for( var i in input )
{
if ( typeof( input[i] ) == 'undefined' )
{
continue;
}
var _return = performFormData( input[i].name, input[i].value );
if ( _return != '' )
{
dataString += ( ( dataString ) ? '&' : '' ) + _return;
}
}
// now return data
return dataString;
}
Das funktioniert im Firefox auch sehr zufriedenstellend. Im IE jedoch nur bedingt, denn da werden diese Radio Fields einfach nicht aufgelistet. Kann mir dazu aber auch keinen Reim bilden weswegen das so ist.
Als Test hab ich mir mal was zusammengebastelt:
Code:
<html>
<head></head>
<body>
<form action="" method="post">
<input class="radio" type="radio" name="language" value="de-DE" checked="checked" />de-DE <input class="radio" type="radio" name="language" value="en-US" />
<input type="button" name="Test" value="Test" onclick="getFormData( '' );" />
</body>
</html>
Vielleicht weiß einer woran es da liegen könnte.
Bedanke mich aber schon mal im Vorraus.