Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Select - выборка value
 
 автор: holst   (10.04.2009 в 11:19)   письмо автору
 
 

Здравствуйте.

Проблема:
есть массив из справочника:
id
full_reason
small_reason
id_category

из этого массива (индексы не по порядку) создается <select>-элемент, где value - индекс из базы, текст в <option> - small_reason.

Надо, чтобы при выборе какого либо элемента в текстовое поле вносился full_reason, с соответствующим индексом. Я это реализовал с помощью скрытого еще одного <select>, в котором находятся full_reason с тем же порядком value-индексов. Но вот по такой конструкции:
document.getElementById('text_input').value = document.getElementById('full_reason_select').options[value_current].text;

value_current - передаваемый параметр, выбранного small_reason_select элемента;

в текстовое поле вносится ПОРЯДКОВЫЙ элемент из второго <select>, а не соответствующий value_current.

Как поменять, чтобы вносилось в соответствии с value, а не с порядковым номером?

Спасибо.

  Ответить  
 
 автор: PAT   (10.04.2009 в 11:31)   письмо автору
 
   для: holst   (10.04.2009 в 11:19)
 

Очень туманно вы описали вашу задачу.
Потому единственное, что могу посоветовать, это:
замените options[value_current].text;
      на options[value_current].value;

Но вообще-то, конечно, использовать скрытый селект только для хранения данных - это полный бред.
Неужто не в курсе, что в JS имеются хеш-массивы?
Например, для данных некоего опроса:
сигареты --> Винстон
напиток --> водка
закуска --> соленые огурцы
болею за --> динамо
вполне можно создать хеш-массив. Причём несколькими способами. Например, так:
var Hash_Array = {'сигареты':'Винстон', 'напиток':'водка', 'закуска':'соленые огурцы', 'болею за':'динамо'}
Соответственно, вызов Hash_Array ['закуска'] вернёт вам 'соленые огурцы'.

  Ответить  
 
 автор: HoLsT   (10.04.2009 в 12:58)   письмо автору
 
   для: PAT   (10.04.2009 в 11:31)
 

вносить надо текст а не индекс.... представьте, что вместо второго индекса хеш-массив...

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

Он, напрмер, определяется в каком то теге <script> в начале страницы.
Когда я пытаюст вписать
onchange="javascript:alert(text_array['1']);"
- пишет, что определение text_array отсутствует.

  Ответить  
 
 автор: PAT   (10.04.2009 в 14:20)   письмо автору
 
   для: HoLsT   (10.04.2009 в 12:58)
 

Повторюсь, что вас понять ОЧЕНЬ трудно.
Я вынужден всякий раз идти на кухню, готовить себе чашку кофе, выпивать его, а потом на остатках кофейной гущи гадать.

Вот вы написали: "вносить надо текст а не индекс"
А я разве где-то употреблял индексы?
Что, слово 'закуска' - это не текст?
Или фраза 'соленые огурцы' - это тоже не текст?
Условно говоря, хеш-массив потому и называется хешем, что в нём ВМЕСТО индексов используются строки.

Ваша инструкция onchange срабатывает всякий раз, когда в селекте происходит изменение selectIndex'a.
Да, selectIndex - это ЧИСЛОВОЙ ИНДЕКС.
Но ведь, зная этот новый числовой индекс, вы сразу можете работать с ДВУМЯ строками - со значением value выбранного опшена, и со значением text этого же опшена. И именно эти строки использовать для обращения к элементу хеш-массива.

>"представьте, что вместо второго индекса хеш-массив"
А чего тут представлять-то?
Массивы в Javscripte могут быть любой размерности.
Т.е. фактически массивы бывают только одномерные.
Но каждый элемент массива может также быть массивом, а его элементы - тоже массивами...
и так хоть до бесконечности - лишь бы сами не запутались :-)

>"как обратиться к какому либо массиву на сртанице"
Если массив ГЛОБАЛЬНЫЙ, т.е. определён ВНЕ функции в ПЕРВОМ скритовом блоке, то обратиться к нему (или к любому элементу его) можно из любого места страницы - из этого же или из любого следующего скриптового блока, или из любой инструкции события типа ON-чего-то (onload, onchange, onmouseover и т.д. - из ЛЮБОЙ)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования