Как определить выбранное значение раскрывающегося списка - PullRequest
3 голосов
/ 27 февраля 2010

Когда я выбираю один элемент в первом раскрывающемся списке, запускается событие ajax, вызывается другая функция, которая загружает информацию во второй раскрывающийся список. Я не хочу этого (нет решения для кнопки, пожалуйста)

<select id=combo1>
   <option>...</option>
   ...  
</select>
<input type=button onclick="loadCombo2()">

Ответы [ 2 ]

2 голосов
/ 27 февраля 2010

Вы можете пойти примерно так:

<select id="combo1" onchange="requestSend(this.value);">
options..........
</select>

<select id="combo2">
options...........
</select>


<script>
  function requestSend(txt)
  {
     $.ajax({
      url:'process.jsp',
      data: "v=" + txt,
      cache:false,
      success: function(response){
       $("#combo2").val(response);
      }
     });
  }
</script>

....

Заполнение Combo2 Опции:

Чтобы заполнить опции combo2, вам нужно создать их в скрипте, который обрабатывает запрос ajax, например в php (я не знаю, какой язык вы используете), я сделаю что-то подобное в скрипте обработки ajax:

// db queries to get data or whatever
// create a variable that will hold options and shown in combo2

$options = '<option value="whatever">whatever</option>' . "\n";
$options .= '<option value="whatever">whatever</option>' . "\n";
$options .= '<option value="whatever">whatever</option>' . "\n";
//........ etc

// Now we send back the $options variable which will populate the combo2
echo $options;
1 голос
/ 28 февраля 2010

Если бы это было реализовано в ASP.NET, я бы использовал обработчик HTTP для возврата данных в формате JSON во второй комбинированный список.

Используя jQuery, вы бы вызывали обработчик следующим образом для реализации каскадирования:

$("#combo1").change(function()
{
    $("#combo2").html("");

    var valueSelected = $("#combo1").val();

    if (valueSelected != 0)
    {                 
        $.getJSON('LoadCombo2.ashx?valueSelected=' + valueSelected, function(returnedData)
        {
            $.each(returnedData, function()
            {                        
                $("#combo2").append($("<option></option>").val(this['ID']).html(this['Value']));

            });
        });
    }
});

Чтобы узнать, как реализовать обработчик HTTP, ознакомьтесь с более подробным пошаговым описанием в этом посте:
http://www.codedigest.com/Articles/jQuery/224_Building_Cascading_DropDownList_in_ASPNet_Using_jQuery_and_JSON.aspx

Если вам не нужно каскадировать комбинированные списки, это станет проще. Просто вызовите обработчик без передачи параметров и загрузите все данные, которые вам нужны, чтобы заполнить второй комбинированный список в функции обратного вызова jQuery.

http://api.jquery.com/jQuery.getJSON/

Надеюсь, вы поняли идею.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...