jQuery .change预选的选定值

时间:2015-05-26 08:30:52

标签: jquery selected

我想更新cookie(通过update.php)并通过传输新数据(id,value)重新加载网站。值1是预先选择的,并且使用jQuery设置str = 1,而不是选择的选项值,例如6。

    $( ".a2d" ).change(function() {
       var prodId = this.id;
       var e = document.getElementById(prodId);
       var str = e.options[e.selectedIndex].value;
       var url = "../update.php?id=" + prodId + "&updateNewValue=" + str;
       $(location).attr('href',url);
    });

HTML:

<select class="a2d" id="2" name="2">
   <option value="0">0</option>
   <option value="1" selected="">1</option>
   <option value="2">2</option>
   <option value="3">3</option>
</select>

使用

var str = $('#' + prodId).options[this.selectedIndex].val();

它似乎工作得更好(因为它获得了正确的选定值),但是firebug中的错误说:

未捕获的TypeError:无法读取属性&#39; 6&#39;未定义的

4 个答案:

答案 0 :(得分:1)

$('#' + prodId)

这是一个jquery对象,而不是javascript对象因此使用它:

document.getElementById(prodId).options[this.selectedIndex].value;

答案 1 :(得分:1)

您无需获取所选索引,只需获取<select>

的值即可
var str = $('#' + prodId).val();

但由于prodIdthis.id,您可以使用:

var str = $(this).val();

答案 2 :(得分:1)

只需使用this引用

读取select元素的值即可
$(".a2d").change(function () {
    var str = $(this).val();//or just this.value
    var url = "../update.php?id=" + prodId + "&updateNewValue=" + str;
    $(location).attr('href', url);
});

在您的情况下,$('#' + prodId)返回一个jQuery对象,该对象没有属于dom元素引用的options属性。

答案 3 :(得分:1)

要获得该值,请尝试

var str = $('#' + prodId).val();

var str = this.value;// best option