获取下拉列表JavaScript的价值

时间:2015-05-20 20:43:05

标签: javascript drop-down-menu

如何使所有选定的选项,而不是值,但实际的文本,将显示在某处?

Html:

<h1>Made your PC:</h1>

<div>
  <label>Processeor: </label><select id="processor" name="processor">
  <option class="label" value>Select Processor</option>
  <!-- Home Ware -->
  <option value="P1">Processor 1</option>
  <option value="P2">Processor 2</option>
  <option value="P3">Processor 3</option>
  <option value="P4">Processor 4</option>

  </select>
</div>

<p><strong>Only compatible components will show.</strong></p>
<div>
  <label>Select motherboard: </label><select id="motherboard" name="motherboard" class="subcat" disabled="disabled">
  <option class="label" value>Select Motherboard</option>
  <!-- Home Ware -->
  <option rel="P1 P2" value="AS1">ASUS RAMPAGE V EXTREME</option>
  <option rel="P2 P3" value="AS2">ASUS ATX DDR3 2600 LGA</option>
  <option rel="P1 P3 P4" value="GB1">Gigabyte AM3+</option>
  <option rel="P2 P4" value="MSI1">MSI ATX DDR3 2600 LGA 1150</option>

  </select>
</div>
<div>
  <label>Select RAM: </label> <select disabled="disabled" class="subcat" id="RAM" name="RAM">
  <option class="label" value>RAM Memory</option>
  <option rel="AS1 AS2 GB1" value="KI1">Kingston Value RAM</option>
  <option rel="AS1 AS2 MSI1" value="P5KPL">P5KPL-AM SE</option>
  <option rel="MSI1 GB1" value="960GM">960GM-VGS3 FX </option>
  </select>
</div>

<div>
  <label>Select Video Board: </label> <select disabled="disabled" class="subcat" id="video-card" name="video-card">
  <option class="label" value>Video Card</option>
  <option rel="MSI1 AS2" value="EVGA8400">EVGA GeForce 8400 GS</option>
  <option rel="AS1" value="XFXAMD">XFX AMD Radeon HD 5450</option>
  <option rel="MSI1 GB1" value="GTX750Ti">EVGA GeForce GTX 750Ti SC</option>
  </select>
</div>

Javascript:

$(function(){


  var $supcat = $("#processor"),
      $cat = $("#motherboard"),
      $subcat = $(".subcat");


  $supcat.on("change",function(){
    var _rel = $(this).val();
    $cat.find("option").attr("style","");
    $cat.val("");
    if(!_rel) return $cat.prop("disabled",true);
    $cat.find("[rel~='"+_rel+"']").show();
    $cat.prop("disabled",false);
  });

  $cat.on("change",function(){
    var _rel = $(this).val();
    $subcat.find("option").attr("style","");
    $subcat.val("");
    if(!_rel) return $subcat.prop("disabled",true);
    $subcat.find("[rel~='"+_rel+"']").show();
    $subcat.prop("disabled",false);
  });
});

我尝试了之前发布的这一个代码,但它只显示一个选择,在选择之后,是否有任何方式可以显示所有选择和随机文本,如“您的选择”?:

<script>
    function myNewFunction(sel)
    {
        alert(sel.options[sel.selectedIndex].text);
    }
</script>

<select id="box1" onChange="myNewFunction(this);" >
    <option value="98">dog</option>
    <option value="7122">cat</option>
    <option value="142">bird</option>
</select>

3 个答案:

答案 0 :(得分:0)

function myNewFunction(sel) {
    alert($(sel).val());
}

这实际上应该有效 如果这不起作用,请尝试在警报周围放置window.setTimeout(function() { ... }, 10);。当用户点击一个选项时,浏览器可能会在更新选择值之前调用myNewFunction()方法。

编辑:如果您想要文本而不是值,请使用

alert($(sel).find("option:selected").text());

答案 1 :(得分:0)

这应该给出给定select元素的实际标签文本,而不是值。

$(selector).find(":checked").html()

所以,如果你想展示所有这些,你可以这样做:

$("#video-card").on("change", function () {
    var choices = [];
  $("select").each(function() {
    choices.push($(this).find(":checked").html());
  });
  alert("You selected: " + choices.join(', '));
})

这是一个用于演示目的的编码器

http://codepen.io/anon/pen/XbjKYQ

答案 2 :(得分:0)

您需要遍历每个选项,而不仅仅是第一个:

q' = (T1 * S1 * T1') * (T2 * S2 * T2') * q

在这种情况下,我将所有值都推送到数组中,然后在末尾连接数组值以创建最终字符串。

我更新了之前提供的codepen:http://codepen.io/anon/pen/WvGxgz