io avevo lo stesso problema con l'evento OnChange di alcune select dinamiche, che poi ho risolto con una serie di ISSET, vedi se ti può andare bene come spunto:



Codice PHP:
          <?php

$max 
= isset($_POST["max"])?$_POST["max"]:1;

echo 
"<input type=\"hidden\" name=\"max\" value=\"$max\">\n";

for (
$i 1$i <= $max$i++)

{

echo 
"         

          <tr>

            <td>Categoria Ordine:</td>

            <td></td>"
;



$servizi "select * from `servizi`";

$lista_servizi mysql_query($servizi) or die ("non eseguo la query servizi");

echo 
"<td><select name=\"servizio[$i]\" OnChange=\"document.forms[0].submit()\">\n";

echo 
"<option value=\"0\">- Tipo servizio -</option>\n";

while (
$ser mysql_fetch_array($lista_servizi,MYSQL_ASSOC))

{

echo 
"<option value=\"".$ser["id_serv"]."\"";

 if (isset(
$_POST["servizio"][$i]) and $_POST["servizio"][$i] == 

$ser["id_serv"])

 {

        echo 
" selected";

 }

 echo 
">".$ser["descrizione"]."</option>\n";

}

echo 
"</select></td></tr> <tr><td>Tipologia ordine:</td><td></td>";

if (isset (
$_POST["servizio"][$i]))

{

$cat_servizi "select * from `categoria_servizi` where `id_rif_servizi` = '".$_POST["servizio"][$i]."'";

$lista_cat_servizi mysql_query($cat_servizi) or die ("non eseguo la query account");

echo 
"<td><select name=\"cat_servizio[$i]\">";

while (
$cat_serv mysql_fetch_array($lista_cat_servizi,MYSQL_ASSOC))

{

echo 
"<option value=\"".$cat_serv["id_cat_serv"]."\"";

if (isset(
$_POST["cat_servizio"][$i]) and $_POST["cat_servizio"][$i] == 

$cat_serv["id_cat_serv"])

 {

        echo 
" selected";

 }

 echo
">".$cat_serv["descrizione"]."</option>\n";

}

}

else

{

}

echo 
"</select></td></tr><tr><td>Quantità:</td><td></td><td><input name=\"quantita[$i]\" type=\"text\" id=\"quantita\"

value=\""
.(isset($_POST["quantita"][$i])?$_POST["quantita"][$i]:"")."\" size=\"8\" maxlenght=\"10\"></td></tr>

<tr><td>Descrizione articolo:</td><td></td><td><textarea name=\"descr_articolo[
$i]\" cols=\"30\" rows=\"8\" wrap=\"virtual\" id=\"descr_articolo[$i]\">".(isset($_POST["descr_articolo"][$i])?$_POST["descr_articolo"][$i]:"")."</textarea></td></tr>";

}

?>

<tr><td>Altri articoli</td>

  <td></td>

  <td><input type="submit" name="aggiungi" value="Aggiungi articolo" onclick="max.value++" />

  <input type="submit" name="rimuovi" value="Rimuovi articolo" OnClick="max.value--" /></td></tr>