jQuery从多个选择中获取值

时间:2012-02-08 10:12:59

标签: javascript jquery asp.net

我有以下代码,基本上当select的值改变时,我希望能够获取新值并将其添加到已存在的值(或减去它)。

我遇到了一个实际抓住价值的问题。我有这个来创建选择列表:

      <li class="extraHeight">
    <asp:Image runat="server" CssClass="iconImageMove" ID="Image14" ImageUrl="~/images/icons/carpark_off.png" />
    <div class="flipWidth">
        <select name="access" class="change" id="carpark_off"  runat="server">
            <option value="0">Off</option>
            <option value="256">On</option>
        </select>
     </div> <br /> <p class="noWrap">Accessible Car parking facilities</p>
</li>

        <li class="extraHeight">
    <asp:Image runat="server" CssClass="iconImageMove" ID="Image15" ImageUrl="~/images/icons/parking_off.png" />
    <div class="flipWidth">
        <select name="access" class="change" id="parking_off"  runat="server">
            <option value="0">Off</option>
            <option value="33554432">On</option>
        </select>
     </div> <br /> <p class="noWrap">Customer Car parking facilities</p>
</li>

        <li class="extraHeight">
    <asp:Image runat="server" CssClass="iconImageMove" ID="Image16" ImageUrl="~/images/icons/staff_off.png" />
    <div class="flipWidth">
        <select name="access" class="change" id="staff_off"  runat="server">
            <option value="0">Off</option>
            <option value="8192">On</option>
        </select>

(还有很多,但这会给你一个想法)

我正在使用以下jQuery来检测更改并尝试获取值,但它不起作用:

<script>

    var value = $("select").val()
    $("select").change(function () {
          alert(value);
        })

</script>

真的很感激任何建议!

汤姆

6 个答案:

答案 0 :(得分:3)

您只选择初始值。您需要在change事件中获取值。

$("select").change(function () {
 var value = $(this).val()
 alert(value);
})

答案 1 :(得分:1)

您可以在更改前设置您的值:

<script>
    $("select").change(function () {
          var value = $(this).val()
          alert(value);
        })

</script>

答案 2 :(得分:1)

调用var value = $("select").val()会将选择器匹配的第一个<select>元素的值保存到运行该代码时的变量中 - 当您更改该值时,它将不会更新元件。

相反,您可以使用this回调函数中的change()来引用已更改的<select>元素,并获取其值,如下所示:

$("select").change(function () {
    alert(this.value);
});

答案 3 :(得分:0)

你会做这样的事情:

$("select").change(function () {
      alert($(this).val());
 })

您只获取一次值,然后在更改事件上显示相同的内容。

参见工作演示:http://jsfiddle.net/JsKeS/

答案 4 :(得分:0)

尝试:

<script>
    $(document).ready(function () {
        $("select").change(function () {
            var value = $(this).val();
            alert(value);
        });
    });
</script>

将在DOM加载后将您的更改处理程序附加到select元素。 此外,value应该在处理程序中作用域,否则当其他select元素触发更改事件时,不一定会更新该值。

答案 5 :(得分:0)

首先将您的脚本包装在$(document).ready()中,以便在加载页面后执行。其次在回调中获取select的值:

$(document).ready(function(){
  var value = $("select").val()
    $("select").change(function () {
          alert($(this).val());
    });
})