[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: правильная работа селекта
vn214
Доброго времени суток!
Как исправить select что бы обработать первое значение
так оно не обрабатывается при первой загрузке страницы
Второй момент, после выбора все равно устанавливаться первое значение селекта (мелькает 2 или 3 ), но после обработки страницы все равно все время первое значение, то есть select работает не правильно ....
js ->>> onchange="document.getElementById('f').submit() что то не так делает?
или по другому вообще нужно?

<?php
if($_POST['sel']=='1')
// если так ...
else if($_POST['sel']=='2')
//а если так то ...
else if($_POST['sel']=='3')
//а если так то по другому

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
<
html>

<
body>
<
form action="" method="post" id="f">
<
select name="sel" onchange="document.getElementById('f').submit()">

<
option value="1">1</option>
<
option value="2">2</option>
<
option value="3">3</option>
<
option value="4>4</option>
</select>

</form>
</body>
</html>







Спустя 52 минуты, 30 секунд (12.05.2010 - 01:04) Adil написал(а):
Вообще-то форма все правильно делает. При выборе какого-либо пункта, сразу срабатывает submit.

Посмотри это, сразу поймешь:
<?php
print 'Выбрано значение:'.$_POST['sel'];
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
<
html>
<
body>
<
form action="" method="post" id="f">
<
select name="sel" onchange="document.getElementById('f').submit()">

<
option value="1">1</option>
<
option value="2">2</option>
<
option value="3">3</option>
<
option value="4>4</option>
</select>
</form>
</body>
</html>


Спустя 9 минут, 46 секунд (12.05.2010 - 01:14) Raito-kun написал(а):
Adil, это замечательно, но суть проблемы автора
1. он хочет, чтобы при первом запуске страницы было обработано первое значение (это я думаю можно сделать установив сюда if($_POST['sel']=='1') альтернативное условие первого запуска)
2. он хочет чтобы после выбора другого пункта и обновления страницы(отсылки параметров формы) был выбран именно этот пункт(этого сам не понимаю. нужно каким-то образом взять значения из массива POST и выставить в "selected" соответствующий пункт меню при помощи JS походу)

Спустя 45 минут, 24 секунды (12.05.2010 - 01:59) Adil написал(а):
Цитата (Adil @ 12.05.2010 - 02:04)
1. он хочет, чтобы при первом запуске страницы было обработано первое значение (это я думаю можно сделать установив сюда if($_POST['sel']=='1') альтернативное условие первого запуска)


Может уже ночь, и поэтому я в этот пункт не совсем въехал..

А вот про:
Цитата (Raito-kun @ 12.05.2010 - 02:14)
2. он хочет чтобы после выбора другого пункта и обновления страницы(отсылки параметров формы) был выбран именно этот пункт(этого сам не понимаю. нужно каким-то образом взять значения из массива POST и выставить в "selected" соответствующий пункт меню при помощи JS походу)


Надо сделать так:
<option value="1" <?php if($_POST['sel'] == 1) print "selected"?> >1</option>


и так для каждого пункта..

P.S.для сокращения можно воспользоваться тернарным оператором.

Спустя 8 минут, 17 секунд (12.05.2010 - 02:08) Raito-kun написал(а):
Цитата
Надо сделать так:
<option value="1" <?php if($_POST['sel'] == 1) print "selected"?> >1</option>


для сокращения можно воспользоваться тернарным оператором.


уже ночь и я жестко затупил, после уроков по JS biggrin.gif laugh.gif

а по поводу первого, имеется ввиду, если я правильно понял, тс хочет, чтобы при первом открытии страницы якобы уже был выбран первый пункт, тоесть мы были тут

if($_POST['sel']=='1')
//тут

если я правильно понял поможет перед всем циклом условие

if(!$_POST['sel'])
echo "1";
else if($_POST['sel']=='1')
echo "1";
else if($_POST['sel']=='2')
echo "2";
else if($_POST['sel']=='3')
echo "3";


тоесть первое условие отработает при первом запуске и продублирует дефолтный селект. в данном случае поведение при выбранной единице.

Спустя 3 минуты, 48 секунд (12.05.2010 - 02:12) Raito-kun написал(а):
лучше так

if($_POST['sel']=='1' || !$_POST['sel'])
echo "1";
else if($_POST['sel']=='2')
echo "2";
else if($_POST['sel']=='3')
echo "3";

Спустя 17 часов, 6 минут, 55 секунд (12.05.2010 - 19:18) vn214 написал(а):
C одним селектом так можно выкрутиться.
А если есть два селекта в одной форме и выбор в них осуществляется независимо друг от друга


<?php

//???
//обработка селектов
//???


?>

<html>

<
form action="" method="post" id="f">
<!--
выбор первого параметра-->
<
select name="sel" onchange="document.getElementById('f').submit()">
<
option value="">Выбор - '<?php if(!$_POST['sel])echo 'из списка'; else echo $_POST['sel']?>'</option>
<option value="a">1</option>
<option value="m">2</option>
<option value="u">3</option>
<option value="n>4</option>
</select>

<--выбор второго параметра-->
<select name="count" onchange="document.getElementById('
f').submit()">
<option value="5">5</option>
<option value="10">10</option>
<option value="15">15</option>
<option value="30">30</option>
</select>
</form>

</html>



Получается что выбор второго сбивает первый селект,то есть, после выбора во втором селекте, независимо от того что выбрано в первом, загружается первый выбор(первого естественно ) селекта и ... получается ....
Что здесь можно сделать?

Спустя 4 часа, 30 минут, 15 секунд (12.05.2010 - 23:49) parparamyk написал(а):

$sel = 1;
if($_POST)
{
switch($_POST['sel'])
{
case '0':
$sel = 0;
break;
case '1':
$sel = 1;
break;
...

}
}

$selected = array(0 => '', 1 => '' .....)
$selected[$sel] = 'selected';


<option value="1" <?php echo $selected[1]?> >1</option>


Всё должно работать

Спустя 17 часов, 41 минута, 24 секунды (13.05.2010 - 17:30) vn214 написал(а):
Насколько понял это попытка связать два селекта между собой?
Выбор в селектах не зависит друг от друга.

То есть при нажатии во втором селекте, сбиватеся первый и наоборот.

То же самое если нажать сабмит(submit).
Как можно сохранить выбор(сделанный скажем в первом селекте), после другого(второго) обращения к форме?(После нажатия на кнопку(или клика второго селекта)


_____________
Спартак - чемпион
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.