使用jQuery更改下拉列表的选定值

我有一个带有已知值的下拉列表。我正在尝试将下拉列表设置为使用jQuery知道的特定值。使用常规JavaScript,我会做类似的事情:

ddl = document.getElementById("ID of element goes here");
ddl.value = 2; // 2 being the value I want to set it too.

但是,我需要使用jQuery完成此操作,因为我将CSS类用于选择器(愚蠢的ASP.NET客户端ID ...)。

这是我尝试过的一些方法:

$("._statusDDL").val(2); // Doesn't find 2 as a value.
$("._statusDDL").children("option").val(2) // Also failed.

如何使用jQuery?

更新资料

事实证明,我第一次做对了:

$("._statusDDL").val(2);

当我在上面放置一个警报时,它可以正常工作,但是当我删除警报并使其全速运行时,我得到了错误

无法设置所选属性。无效的索引

我不确定这是不是jQuery或Internet Explorer 6的错误(我猜是Internet Explorer 6),但这非常令人讨厌。

Near神乐路易2020/03/10 12:16:37

就我而言,我可以使用.attr()方法使其正常工作。

$("._statusDDL").attr("selected", "");
JinJin卡卡西小胖2020/03/10 12:16:37

另一个选项是在.net中设置控件参数ClientID =“ Static”,然后可以通过设置的ID访问JQuery中的对象。

SamGreen2020/03/10 12:16:37

您如何将这些值加载到下拉列表中或确定要选择哪个值?如果使用Ajax进行此操作,则在进行选择之前需要延迟的原因可能是因为在执行相关行时未加载值。这也可以解释为什么在设置状态之前将警报语句放在行上时它起作用的原因,因为警报操作会给数据加载带来足够的延迟。

如果使用的是jQuery的Ajax方法之一,则可以指定一个回调函数,然后将其$("._statusDDL").val(2);放入您的回调函数中。

这将是处理该问题的一种更可靠的方法,因为您可以确定该方法在数据准备就绪时执行,即使花费的时间超过300毫秒也是如此。

ProTony2020/03/10 12:16:37

我使用扩展函数来获取客户端ID,如下所示:

$.extend({
    clientID: function(id) {
        return $("[id$='" + id + "']");
    }
});

然后,您可以像这样在jQuery中调用ASP.NET控件:

$.clientID("_statusDDL")
凯神乐2020/03/10 12:16:37

只需尝试

$("._statusDDL").val("2");

而不是

$("._statusDDL").val(2);
老丝乐2020/03/10 12:16:37

对于隐藏字段,您需要这样使用:

$("._statusDDL").val(2);
$("._statusDDL").change();

要么

$("._statusDDL").val(2).change();
逆天前端2020/03/10 12:16:37

仅供参考,您无需使用CSS类即可完成此操作。

您可以编写以下代码行以在客户端上获取正确的控件名称:

$("#<%= statusDDL.ClientID %>").val("2");

ASP.NET将在jQuery中正确呈现控件ID。