Naveen_143 Ответов: 2

Поле со списком в HTML, JAVA SCRIPT


У меня есть два поля со списком на моей html-странице. Основываясь на значении, выбранном в первом значении поля со списком, мне нужно загрузить данные во второе значение поля со списком.(Поля со списком бывшая страна и Штаты). Я могу правильно заполнить значения во втором combobox с помощью Java-скрипта. Но моя проблема заключается в том , что после заполнения значений во 2-м combobox , когда я выбираю значение во 2-м combobox, оно не отображается сразу. Тем не менее 2-й combobox имеет синее пустое пространство. Он не привязывает выбранное значение.

Но когда я изменяю значение в первом поле со списком,то отображается Предыдущее значение, выбранное во втором поле со списком. Я перепробовал много вещей, но не получил никакого решения. Это очень урджент.


заранее спасибо.

Christian Graus

Не волнуйтесь, я удалил то место, где вы (грубо) спросили об этом дважды.

Naveen_143

Он не был вывешен дважды интенсивно. Из-за какой-то сетевой проблемы это произошло.

Naveen_143

Спасибо за удаление. Я пытался это сделать.

2 Ответов

Рейтинг:
1

enhzflep

Прежде чем я начну, я собираюсь повторить то, что Кристиан сказал ранее. Это не очень-то "урджент" . нам вообще. Это было объединено с "заранее благодарностью", которая может быть истолкована некоторыми как указание на то, что любые усилия не будут признаны после факта.

Для меня последние два предложения вашего вопроса испортили то, что в противном случае было бы-хорошо. "это очень urjent. Заранее спасибо"

В любом случае, это не так уж и сложно. Посещать http://www.w3schools.com/js/default.asp[^] часто считайте его примерно эквивалентным MSDN для всех вещей, связанных с интернетом, хотя, по общему признанию, он не так всеобъемлющ.

Попробуйте сделать следующее:

<!DOCTYPE html>
<html>
  <head>
  <script>
    function byId(e) {return document.getElementById(e);}

    function stateComboChange()
    {
        var combo1 = byId('stateCombo');
        var combo2 = byId('cityCombo');
//      alert(combo1.value);

        emptyCombo(combo2);
        switch(combo1.value)
        {
            case '-1':  addOption(combo2, -1, '-select state first-');
                        break;
            case '0':       addOption(combo2, 0, 'Melbourne');
                        addOption(combo2, 1, 'Horsham');
                        break;
            case '1':       addOption(combo2, 2, 'Sydney');
                        addOption(combo2, 3, 'Bondi');
                        break;
            case '2':       addOption(combo2, 4, 'Hobart');
                        addOption(combo2, 5, 'Port Arthur');
                        break;
        }
        cityComboChange();
    }

    function cityComboChange()
    {
        var combo2, tgt;
        combo2 = byId('cityCombo');
        tgt = byId('tgt');

        tgt.innerHTML = combo2.options[combo2.options.selectedIndex].title;
    }

    function emptyCombo(e)
    {
        e.innerHTML = '';
    }

    function addOption(combo, val, txt)
    {
        var option = document.createElement('option');
        option.value = val;
        option.title = txt;
        option.appendChild(document.createTextNode(txt));
        combo.appendChild(option);
    }

  </script>
  </head>
  <body>
    <select id='stateCombo' onchange='stateComboChange();'>
        <option value='-1' title='-select one-'>-select one-</option>
        <option value='0' title='Vic'>Vic</option>
        <option value='1' title='Nsw'>Nsw</option>
        <option value='2' title='Tas'>Tas</option>
    </select>

    <select id='cityCombo' onchange='cityComboChange();'>
        <option value='-1' title='-select state first-'>-select state first-</option>
    </select>

    <div id='tgt'></div>
</body>
</html>


Отредактировано для добавления отображения текста выбранного элемента списка городов.


Naveen_143

Привет...спасибо за ваш ответ. Мило. У меня есть сомнения, не могли бы вы сказать мне, как привязать выделенное значение к полю со списком в javascript.

Rockingadget

Привет,

Большое спасибо enhzflep за этот приятный код. Помогите мне очень сильно!
Можно ли также иметь код для "катинга" выбранных значений и с помощью кнопки отправки отправлять их по электронной почте?

с уважением

Андреас Ахиллеос

enhzflep

Конечно, как только я пойму, что вы имеете в виду. Что вы хотите этим сказать?
Я знаком с этим термином, когда элемент управления представлен в виде объекта управления, а входные данные представлены в виде объекта списка.
Например, Flex, .NET, M$ Acess... никогда не видел, чтобы его использовали в этом контексте.

Так что же вы имеете в виду, не используя слово привязать?

enhzflep

Всегда пожалуйста, Андреас. Я сам уже много лет не отправлял никаких сообщений электронной почты и должен был бы исследовать себя, чтобы быть уверенным, хотя я полагаю, что вы могли бы использовать значения, полученные из комбинированных полей, для построения URL-адреса типа mailto. Url-адрес, который откроет почтовую программу по умолчанию на клиентском компьютере с предварительно заполненными полями TO: TITLE: и BODY:. В противном случае вы можете просто перехватить значения на стороне сервера и использовать серверное решение для электронной почты.

Naveen_143

Я имею в виду ... когда я выбираю значение в поле со списком,оно не отображается. Отображается только синее пустое поле. Как отобразить выбранное значение поля со списком.?

Rockingadget

Спасибо за ответ.

Я займусь этим делом.

Итак, чтобы затем взять значения из этих ящиков cobo, должен ли я использовать команду document.getElementById, а затем использовать ее для дальнейшего процесса?

Спасибо

с уважением,

Андреас Ахиллеос

enhzflep

Если я правильно понимаю вопрос, то это делает функция cityComboChange.

Вы пробовали запустить код, который я вставил? Когда вы выбираете опцию из 2 - го поля со списком, все, что вы выбрали, отображается под ней-внутри div с идентификатором "tgt"

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

// возвращает элемент, который находится в поле со списком
var combo2 = byId('cityCombo');

// возвращает строку и значение выбранного параметра
ВАР selectedStr = combo2.варианты[combo2.варианты.свойства selectedIndex].название;
ВАР selectedVal = combo2.значение;

Это помогает? - (Я все еще не уверен, что правильно вас понял)

Naveen_143

Привет ... извините за поздний ответ.
Спасибо за объяснение. Я узнал несколько новых моментов из вашего кода и объяснений. В любом случае я нашел другое решение своей проблемы.
Спасибо, что уделили мне время.

enhzflep

Пожалуйста. :)

Рейтинг:
0

Christian Graus

Для нас это не "урджент". Это не ваше право беспокоить нас, чтобы мы делали вашу работу за вас, быстрее.

Вы не можете сделать это только в Javascript и HTML. Вы используете ASP.NET -что ? В ASP.NET, событие загрузки страницы срабатывает до вашего события, а предварительный просмотр страницы срабатывает после него. Таким образом, если вы заполняете свои списки при загрузке страницы, ваше событие запускает и изменяет выбранный индекс после загрузки данных. Переместите этот код в пререндер.

Это дикая догадка, основанная на вашем неполном посте. Уточните и напишите код, если я ошибаюсь.


Naveen_143

Спасибо за ваш ответ. Я не использую ASP.Net. Это только HTML - страницы и java-скрипты.

Naveen_143

Функции onChange, после первого комбобокса, я заполнения значения во втором поле со списком.

Christian Graus

Почему это так срочно, если вы делаете это таким образом ? Почему бы не опубликовать свой код ?