2011-02-02 21 views
1

所以基本上我有一個表單提交一個新的文章到數據庫。結合表單帖子和多個下拉JS重新加載

提交時,頁面驗證條目並顯示錯誤,並使用$_POST重新填充字段以允許用戶修復錯誤。這工作正常。下面是代碼:

<form name="form1" method="post" action="newArticle.php?action=add"> 
    <p>&nbsp;Title:<br /> 
     <input name="title" type="text" id="title" size="30" 
       value="<?=$HTTP_POST_VARS['title']?>"> 
    </p> 
    <p>&nbsp;Tagline:<br /> 
     <input name="tagline" type="text" id="tagline" size="30" 
       value="<?=$HTTP_POST_VARS['tagline']?>"> 
    </p> 

現在我已經加入3下拉菜單選擇部分,分別由JS重載從數據庫填充從前面的列表中進行選擇後。這些也很好。 像這樣:

<? //////////  Starting of first drop downlist ///////// 
echo "<select name='country' onchange=\"reload(this.form)\"><option value=''>Select one</option>"; 
while($noticia2 = mysql_fetch_array($quer2)) { 
    if($noticia2['id'][email protected]$country){ 
     echo "<option selected value='$noticia2[id]'>$noticia2[name]</option>"."<BR>";} 
    else{ 
     echo "<option value='$noticia2[id]'>$noticia2[name]</option>";} 
} 
echo "</select>"; 
////////////////// This will end the first drop down list /////////// 

//////////  Starting of second drop downlist ///////// 
echo "<select name='region' onchange=\"reload3(this.form)\"><option value=''>Select one</option>"; 
while($noticia = mysql_fetch_array($quer)) { 
    if($noticia['id'][email protected]$region){ 
     echo "<option selected value='$noticia[id]'>$noticia[name]</option>"."<BR>";} 
    else{ 
     echo "<option value='$noticia[id]'>$noticia[name]</option>";} 
} 
echo "</select>"; 
////////////////// This will end the second drop down list /////////// 


//////////  Starting of third drop downlist ///////// 
echo "<select name='resort' ><option value=''>Select one</option>"; 
while($noticia = mysql_fetch_array($quer3)) { 
    echo "<option value='$noticia[id]'>$noticia[name]</option>"; 
} 
echo "</select>"; 
////////////////// This will end the third drop down list ///////////?> 

的JavaScript是:

<script language=JavaScript> 
    function reload(form) 
    { 
     var val=form.country.options[form.country.options.selectedIndex].value; 
     self.location='newArticle.php?country=' + val ; 
    } 
    function reload3(form) 
    { 
     var val=form.country.options[form.country.options.selectedIndex].value; 
     var val2=form.region.options[form.region.options.selectedIndex].value; 

     self.location='newArticle.php?country=' + val + '&region=' + val2 ; 
    } 
</script> 

我的問題是,表單域使用下拉式菜單中,基本上意味着用戶必須再次啓動重裝後空。

有沒有一種明智的方式來完成這項工作,或者一種替代方式來填充post/reload上的字段?這似乎是一種複雜的做事方式。

我更喜歡使用PHP來更新下拉菜單,但在遇到其他人被選中後更改第一個下拉菜單時遇到了問題。

+0

你正在改變self.location,它會重新加載整個頁面。相反,如果使用ajax和更智能的處理,只要在之前的某個選項中選擇了某個選項,就會加載後面的下拉列表的值,那麼該如何處理呢? – zanlok 2011-02-02 16:15:39

回答

1

正如評論中所述,當您使用self.location =更改頁面的位置時,會丟失表單中的所有數據。

而不是self.location='newArticle.php?country=' + val + '&region=' + val2 ;爲什麼不只是發佈表格使用form.submit()