|
|
|
| Как передать значение из select, в котором нет опции value?
Вот код:
<SCRIPT language=JavaScript>
function sender(){
Indx=document.sh.city_.selectedIndex;
top.document.list.city.value = Indx;}
</SCRIPT>
</head><body>
<form name="sh"><select size=1 name='city_' onchange="sender()";>
<option selected>Москва</option>
<option>Санкт-Петербург</option>
<option>Екатеринбург</option>
<option>Нижний Новгород</option>
<option>Самара</option>
<option>Волгоград</option></select>
|
Но в итоге передаётся цифра(номер строки option), а надо, чтобы передавало само название города. Можно ли как-то обойтись без value??? | |
|
|
|
|
|
|
|
для: Владимир22
(13.09.2008 в 16:07)
| | А как вы без value что-то отправите на сервер? Не хотите индексов, пишите так:
<option value="Москва" selected>Москва</option>
<option value="Санкт-Петербург">Санкт-Петербург</option> | |
|
|
|
|
|
|
|
для: sim5
(13.09.2008 в 16:50)
| | Неужели без value никак нельзя? | |
|
|
|
|
|
|
|
для: Владимир22
(13.09.2008 в 18:14)
| | Я удивляюсь ей богу. Ну а что по вашему должен получать сервер от элемента формы, если у него не будет значения? Чем вас не устраивает названия города непосредственно как значение опшена, если вы хотите именно этого? Вы уж лучше опишите задачу, которую вы хотите решить, возможно вы заблуждаетесь, и не стоит городить того, чего вы пытаетесь. | |
|
|
|
|
|
|
|
для: sim5
(13.09.2008 в 18:32)
| | Ничего там городить и не нужно.
Атрибут value - не обязательный. Если его нет - передается текст из выбранного элемента option. А для Javascript он хранится в свойстве text.
То есть
<script language="javascript">
function sender(){
var obj = document.sh.city_;
var Indx = obj.options[obj.selectedIndex].text;
top.document.list.city.value = Indx;
}
</script>
</head><body>
<form name="sh">
<select size=1 name='city_' onchange="sender()";>
<option selected>Москва</option>
<option>Санкт-Петербург</option>
<option>Екатеринбург</option>
<option>Нижний Новгород</option>
<option>Самара</option>
<option>Волгоград</option>
</select>
|
| |
|
|
|
|
|
|
|
для: Владимир22
(13.09.2008 в 16:07)
| | Форма ВСЕГДА передаёт пару значений NAME=VALUE всех элементов формы.
Если у элемента формы нет значения у атрибута NAME, то вообще пара значений для этого элемента не передаётся.
Если у элемента нет значения у VALUE, то передаётся "пустая" пара: VALUE=''
Как я понял, вы хотите, чтобы форма передала значение текста выбранного опшена.
Больших проблем при этом нет.
Надо просто:
а) иметь ещё один инпут типа HIDDEN
б) селекту вообще НЕ НАЗНАЧАТЬ атрибут NAME
в) иметь функцию, коя по выбору опшена - по событию ONGANGE - инпуту типа HIDDEN передаст значение текста выбранного опшена.
Пример:
<form name="myFRM">
...
<select onchange="document.forms.myFRM.vmesto_selecta.value = this.options [this.selectedIndex].text">
<option>Москва
<option>...
...
</select><!-- ОБРАТИТЕ ВНИМАНИЕ! У <select> вовсе нет атрибута NAME -->
<input name="vmesto_selecta" value="Москва" type="hidden">
<!-- ОБРАТИТЕ ВНИМАНИЕ! Значение VALUE этого инпута изначально содержит текст первого опшена -->
...
</form>
|
Разумеется - это всего лишь ОДИН из возможных вариантов решения вашей задачи.
*Внимательно прочтите | |
|
|
|
|
|
|
|
для: PAT
(13.09.2008 в 19:15)
| | >Форма ВСЕГДА передаёт пару значений NAME=VALUE всех элементов формы.
не всегда
>Если у элемента нет значения у VALUE, то передаётся "пустая" пара: VALUE=''
Это не так. Исключения:
1.select
2.input type="file"
3.input type="checkbox"
4.input type="radio" | |
|
|
|
|
|
|
|
для: koshka
(13.09.2008 в 23:23)
| | [поправлено модератором] | |
|
|
|
|
|
|
|
для: PAT
(14.09.2008 в 04:40)
| | Я надеюсь, вы не это
>Если у элемента нет значения у VALUE, то передаётся "пустая" пара: VALUE=''
Это не так. Исключения:
1.select
2.input type="file"
3.input type="checkbox"
4.input type="radio"
|
подразумеваете под глупостью? | |
|
|
|
|
|
|
|
для: Drago
(14.09.2008 в 04:56)
| | В том числе и это.
Мною написано чётко: если НЕТ ЗНАЧЕНИЯ, то оно и не передаётся.
Вы хотите сказать, что существуют какие-то "исключения"?
Из кошелька, в котором НЕТ ДЕНЕГ, при каких-то "исключительных" обстоятельствах можно всё-таки вытащить червонец? :-) | |
|
|
|
|
|
|
|
для: PAT
(14.09.2008 в 05:30)
| | >Мною написано чётко: если НЕТ ЗНАЧЕНИЯ, то оно и не передаётся.
Вами написано по-другому:
Форма ВСЕГДА передаёт пару значений NAME=VALUE всех элементов формы.
Если у элемента нет значения у VALUE, то передаётся "пустая" пара: VALUE=''
|
это немного разные вещи.
>Вы хотите сказать, что существуют какие-то "исключения"?
Да. Если у элементов radio или checkbox не определен атрибут value, либо он является пустой строкой, то пара значений NAME=VALUE для них не передается, в принципе.
Для элемента select, если атрибут value не определен, то в паре значений NAME=VALUE, вместо VALUE передается текст, указанный в option. | |
|
|
|
|
|
|
|
для: Drago
(14.09.2008 в 05:51)
| | >Для элемента select, если атрибут value не определен, то в паре значений NAME=VALUE, вместо VALUE передается текст, указанный в option.
Чекбоксы и радиокнопки могут не иметь значение, так они и служат для выбора, и выбранный всегда передаст свое состояние.
[поправлено модератором] | |
|
|
|
|
|
|
|
для: sim5
(14.09.2008 в 05:56)
| | Можете сами убедиться.
<form method=post>
<select name="select">
<option>Item1</option>
<option>Item2</option>
<option>Item3</option>
<option>Item4</option>
<option>Item5</option>
</select>
<input type="submit" value="Send">
</form>
<?
if ($_POST){
var_dump($_POST);
}
?>
|
>А чекбоксы и радиокнопки могут не иметь значение, так они и служат для выбора, и выбранный всегда передаст свое состояние.
Разумеется. Если value у них не определен, то у выбранного checkbox или radio передастся текстовое значение "on". А у не выбранного, не передастся ничего. В том числе и NAME. | |
|
|
|
|
|
|
|
для: Drago
(14.09.2008 в 06:20)
| | Вот именно, занчение "on", на то они и служат эти элементы. А получать указатель в массиве на строку, это есть маразм, что прикажете - по указателю string с индексом, находить значение. Есть пара имя=значение, и не надо усложнять самому себе жизнь.
[поправлено модератором] | |
|
|
|
|
|
|
|
для: sim5
(14.09.2008 в 06:30)
| | sim5, вы наверное плохо выспались. Лично я, не имею привычки усложнять себе жизнь.
Да и речь была не о том. Я, лишь, чуть более, развернуто указал ислючения для этих выражений, которые утверждал PAT.
Форма ВСЕГДА передаёт пару значений NAME=VALUE всех элементов формы.
Если у элемента нет значения у VALUE, то передаётся "пустая" пара: VALUE=''
|
С чем, конкретно, вы не согласны, не прибегая к отговоркам с маразмом? | |
|
|
|
|
|
|
|
для: Drago
(14.09.2008 в 07:03)
| | Да нет, нормально поспал :) Все правильно, элементы типа чекбокс сулужат для выбора, и совсем не обязательно им указывать значения, если нам важно знать только их состояния. Этим я пользуюсь когда выгодно именно такое представление. Что касается списка, в основных браузерах да, будет передан текст опшена, но это верно для всех без исключения браузеров или нет? Я потому и за традиционную "пару".
Ну и хотелось бы узнать главное - зачем автору нужно именно так, текстовое значение. Ведь, если это для последующей обработки на сервере, то уж вы должны знать, что лучше, чем представление уникальным индексом, ничего нет (а особенно для связанных списков).
PS. Кстати о input type="file". Тут вообще надо быть осторожным. Можно передать файл нулевой длины, а часто на форуме встречаются примеры, когда закачку файла делают с использованием copy(), получая баги в конце концов. | |
|
|
|