Изменить выбранное значение раскрывающегося списка с помощью jQuery - PullRequest
781 голосов
/ 31 января 2009

У меня есть выпадающий список с известными значениями. Я пытаюсь установить в раскрывающемся списке определенное значение, которое, как я знаю, существует с использованием 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 идентификаторы клиента ...).

Вот несколько вещей, которые я пробовал:

$("._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), но это ужасно раздражает.

Ответы [ 16 ]

3 голосов
/ 07 апреля 2011

Я использую функцию расширения для получения идентификаторов клиентов, например:

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

Затем вы можете вызывать элементы управления ASP.NET в jQuery следующим образом:

$.clientID("_statusDDL")
3 голосов
/ 30 марта 2010

Просто примечание - я использовал селекторы подстановочных знаков в jQuery для захвата элементов, которые обфусцированы идентификаторами ASP.NET CLient - вам это тоже может помочь:

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

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

Обратите внимание, что идентификатор * подстановочный знак - это найдет ваш элемент, даже если имя "ctl00 $ ctl00 $ ContentPlaceHolder1 $ ContentPlaceHolder1 $ MyDropDown"

2 голосов
/ 05 января 2015
<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');
2 голосов
/ 08 октября 2010
<asp:DropDownList id="MyDropDown" runat="server" />

Использование $("select[name$='MyDropDown']").val().

2 голосов
/ 01 февраля 2009

Как вы загружаете значения в раскрывающийся список или определяете, какое значение выбрать? Если вы делаете это с помощью Ajax, то причиной, по которой вам нужна задержка перед выбором, может быть то, что значения не были загружены во время выполнения рассматриваемой строки. Это также объясняет, почему это работает, когда вы помещаете в строку оператор оповещения перед установкой статуса, поскольку действие оповещения даст достаточную задержку для загрузки данных.

Если вы используете один из методов jQuery Ajax, вы можете указать функцию обратного вызова и затем поместить $("._statusDDL").val(2); в функцию обратного вызова.

Это был бы более надежный способ решения проблемы, поскольку вы могли быть уверены, что метод выполнялся, когда данные были готовы, даже если это занимало более 300 мс.

0 голосов
/ 18 сентября 2018

В моем случае я смог заставить его работать, используя метод .attr ().

$("._statusDDL").attr("selected", "");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...