我有一个已知值的下拉列表。我要做的是将下拉列表设置为我知道使用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的bug(我猜是Internet Explorer 6),但这非常烦人。


当前回答

<asp:DropDownList ID="DropUserType" ClientIDMode="Static" runat="server">
     <asp:ListItem Value="1" Text="aaa"></asp:ListItem>
     <asp:ListItem Value="2" Text="bbb"></asp:ListItem>
</asp:DropDownList>

ClientIDMode=“Static”

$('#DropUserType').val('1');

其他回答

如何将值加载到下拉列表或决定选择哪个值?如果使用Ajax执行此操作,那么在选择发生之前需要延迟的原因可能是因为在执行相关行时没有加载值。这也解释了为什么在设置状态之前将警告语句放在行上时它会工作,因为警报操作将为数据加载提供足够的延迟。

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

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

仅供参考,你不需要使用CSS类来完成这一点。

你可以写下面这行代码在客户端上获得正确的控件名称:

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

ASP。NET将在jQuery内部正确地呈现控件ID。

纯JS

对于现代浏览器来说,使用CSS选择器对于纯JS来说不是问题

document.querySelector('._statusDDL').value = 2;

函数变化(){ document.querySelector(“._statusDDL”)。Value = 2; } <选择类= " _statusDDL " > <option value="1" selected>A</option> . B <选项值= " 2 " > < /选项> <选项值= 3 > C > < /选项 < /选择> <按钮onclick = "变化()“>改变> < /按钮

如果我们想从选项名中找到然后用jQuery选择的选项,请参阅下面的代码

<div class="control">
           <select name="country_id" id="country" class="required-entry" title="Country" data-validate="{'validate-select':true}" aria-required="true">
              <option value=""> </option>
              <option value="SA">Saudi Arabia</option>
              <option value="AF">Afghanistan</option>
              <option value="AR">Argentina</option>
              <option value="AM">Armenia</option>
              <option value="AW">Aruba</option>
              <option value="AU">Australia</option>
              <option value="AT">Austria</option>
              <option value="IS">Iceland</option>
              <option value="IN">India</option>
              <option value="ID">Indonesia</option>
              <option value="IR">Iran</option>
              <option value="IQ">Iraq</option>
              <option value="IE">Ireland</option>
              <option value="IM">Isle of Man</option>
              <option value="IL">Israel</option>
              <option value="IT">Italy</option>
              <option value="JM">Jamaica</option>
              <option value="JP">Japan</option>
              <option value="JE">Jersey</option>
              <option value="JO">Jordan</option>
              <option value="AE">United Arab Emirates</option>
              <option value="GB">United Kingdom</option>
              <option value="US" selected="selected">United States</option>
           </select>
        </div>
<script type='text/javascript'>
let countryRegion="India";
     jQuery("#country option:selected").removeAttr("selected");
        let cValue= jQuery("#country option:contains("+countryRegion+")").val();
        jQuery("#country option[value='"+cValue +"']").attr('selected', 'selected');
</script>

我希望这对你有所帮助!

只是一个注释-我一直在使用jQuery中的通配符选择器来抓取被ASP混淆的项目。NET客户端id -这也可能对你有帮助:

<asp:DropDownList id="MyDropDown" runat="server" />

$("[id* = 'MyDropDown']").append("<option value='-1'>&nbsp;</option>"); //etc

注意id*通配符-这将找到你的元素,即使名称是“ctl00$ctl00$ContentPlaceHolder1$ContentPlaceHolder1$MyDropDown”