jQuery .更改预选的选定值

jQuery .change selected value preselected

我想更新 cookie(通过 update.php)并通过传输新数据(id、值)重新加载网站。预选值 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 中的一个错误说:

未捕获类型错误:无法读取未定义的 属性“6”

$('#' + prodId)

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

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

不需要获取选中的索引,只获取<select>

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

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

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

只需使用 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) returns 一个 jQuery 对象没有属于 dom 元素的 options 属性参考。

要获取值,只需尝试,

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

var str = this.value;// best option