所以基本上我有一个表单可以向数据库提交一篇新文章。
提交后,页面会验证条目并显示错误,并使用$_POST
重新填充字段以允许用户修复错误。这很好用。这是代码:
<form name="form1" method="post" action="newArticle.php?action=add">
<p> Title:<br />
<input name="title" type="text" id="title" size="30"
value="<?=$HTTP_POST_VARS['title']?>">
</p>
<p> Tagline:<br />
<input name="tagline" type="text" id="tagline" size="30"
value="<?=$HTTP_POST_VARS['tagline']?>">
</p>
我现在添加了3个下拉菜单来选择该部分,每个部分在从上一个列表中进行选择后通过JS重新加载从db填充。这些也很好。 像这样:
<? ////////// 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']==@$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']==@$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 + '®ion=' + val2 ;
}
</script>
我的问题是,在使用下拉列表重新加载后,表单字段为空,这实际上意味着用户必须重新开始。
是否有合理的方法来完成这项工作,或者在发布/重新加载时填充字段的替代方法?这似乎是一种复杂的做事方式。
我更倾向于使用PHP来使用post更新下拉列表,但是在选择其他下拉后更改第一个下拉列表时遇到了问题。
答案 0 :(得分:1)
正如评论中所说,当您使用self.location =
更改页面的位置时,您将丢失表单中的所有数据。
而不是self.location='newArticle.php?country=' + val + '®ion=' + val2 ;
为什么不使用form.submit()
张贴表单?