Javascript Получить значения из окна выбора нескольких вариантов - PullRequest
21 голосов
/ 16 марта 2011

Этот сводит меня с ума.Это должно быть что-то простое и глупое, что я пропускаю.У меня есть поле множественного выбора в форме.Я просто пытаюсь получить выбранные значения.В моем цикле, если я использую оповещение, у меня нет проблем.Как только я пытаюсь объединить значения, я получаю сообщение об ошибке «SelBranch [...]. Selected» - ноль или нет объекта

      <form name="InventoryList" method="post" action="InventoryList.asp">
          <select name="SelBranch" class="bnotes" size="5" multiple="multiple">
          <option value="All">All</option>
          <option value="001 Renton">001 Renton</option>
          <option value="002 Spokane">002 Spokane</option>
          <option value="003 Missoula">003 Missoula</option>
          <option value="004 Chehalis">004 Chehalis</option>
          <option value="005 Portland">005 Portland</option>
          <option value="006 Anchorage">006 Anchorage</option>
          <option value="018 PDC">018 PDC</option>
          </select>

         <input type="button" name="ViewReport" value="View" class="bnotes" onclick="GetInventory();">

   </form>


   <script language="JavaScript">
       function GetInventory()
       {
         var InvForm = document.forms.InventoryList;
         var SelBranchVal = "";
         var x = 0;

         for (x=0;x<=InvForm.SelBranch.length;x++)
         {
            if (InvForm.SelBranch[x].selected)
            {
             //alert(InvForm.SelBranch[x].value);
             SelBranchVal = SelBranchVal + "," + InvForm.SelBranch[x].value;
            }
         }
         alert(SelBranchVal);
       }


  </script>

Ответы [ 4 ]

17 голосов
/ 16 марта 2011

Цикл for получает один дополнительный прогон. Изменение

for (x=0;x<=InvForm.SelBranch.length;x++)

до

for (x=0; x < InvForm.SelBranch.length; x++)
3 голосов
/ 17 сентября 2014

Взгляните на HTMLSelectElement.selectedOptions .

HTML

<select name="north-america" multiple>
  <option valud="ca" selected>Canada</a>
  <option value="mx" selected>Mexico</a>
  <option value="us">USA</a>
</select>

JavaScript

var elem = document.querySelector("select");

console.log(elem.selectedOptions);
//=> HTMLCollection [<option value="ca">Canada</option>, <option value="mx">Mexico</option>]

Это также будет работать наmultiple <select> elements


Предупреждение: Поддержка этого selectedOptions кажется довольно неизвестной на данный момент

3 голосов
/ 25 января 2013

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

<!DOCTYPE html>
<html>
<head>
<script>
function show()
{
     var InvForm = document.forms.form;
     var SelBranchVal = "";
     var x = 0;
     for (x=0;x<InvForm.kb.length;x++)
         {
            if(InvForm.kb[x].selected)
            {
             //alert(InvForm.kb[x].value);
             SelBranchVal = InvForm.kb[x].value + "," + SelBranchVal ;
            }
         }
         alert(SelBranchVal);
}
</script>
</head>
<body>
<form name="form">
<select name="kb" id="kb" onclick="show();" multiple>
<option value="India">India</option>
<option selected="selected" value="US">US</option>
<option value="UK">UK</option>
<option value="Japan">Japan</option>
</select>
<!--input type="submit" name="cmdShow" value="Customize Fields"
 onclick="show();" id="cmdShow" /-->
</form>
</body>
</html>
2 голосов
/ 04 августа 2012

Кроме того, измените это:

    SelBranchVal = SelBranchVal + "," + InvForm.SelBranch[x].value;

на

    SelBranchVal = SelBranchVal + InvForm.SelBranch[x].value+ "," ;

Причина в том, что впервые переменная SelBranchVal будет пустой

...