Объединение формы сообщения с несколькими выпадающими JS перезагрузки - PullRequest
1 голос
/ 02 февраля 2011

Так что в основном у меня есть форма, которая представляет новую статью в базу данных.

При отправке страница проверяет записи и отображает ошибки и использует $_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']==@$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 + '&region=' + val2 ;
    }
</script>

Моя проблема в том, что поля формы после перезагрузки после использования выпадающих списков остаются пустыми, что означает, что пользователь должен начать заново.

Есть ли разумный способ заставить это работать, или альтернативный способ заполнить поля после / перезагрузки? Это кажется сложным способом ведения дел.

Я бы предпочел использовать PHP для обновления выпадающих списков, используя сообщение, но у меня возникли проблемы при изменении выпадающего списка после выбора других.

1 Ответ

1 голос
/ 02 февраля 2011

Как было сказано в комментариях, при изменении местоположения страницы с помощью self.location = вы теряете все данные в форме.

Вместо self.location='newArticle.php?country=' + val + '&region=' + val2 ; почему бы просто не опубликовать форму с помощью form.submit() * * 1006

...