У меня есть выпадающий список с известными значениями. Я пытаюсь установить в раскрывающемся списке определенное значение, которое, как я знаю, существует с использованием 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 ), но это ужасно раздражает.
источник
dd1 = document.getElementsByClassName('classname here'); dd1.value = 2;
Ответы:
Документация jQuery гласит:
Такое поведение есть в
jQuery
версиях1.2
и выше.Скорее всего, вы хотите это:
источник
select
скрыто (display: none;
)? Я не могу заставить его работать правильно ...$('._statusDDL [value="2"]').attr('selected',true);
Спасибо!.change()
чтобы увидеть опцию в интерфейсе выпадающего списка, то есть$('#myID').val(3).change();
Со скрытым полем вам нужно использовать вот так:
или
источник
Просто к сведению, вам не нужно использовать CSS-классы для достижения этой цели.
Вы можете написать следующую строку кода, чтобы получить правильное имя элемента управления на клиенте:
ASP.NET будет правильно отображать идентификатор элемента управления в jQuery.
источник
Просто попробуйте с
а не с
источник
Кажется, что эти решения предполагают, что каждый элемент в ваших выпадающих списках имеет значение val (), относящееся к их позиции в раскрывающемся списке.
Все немного сложнее, если это не так.
Чтобы прочитать выбранный индекс из выпадающего списка, вы должны использовать это:
Чтобы установить выбранный индекс из выпадающего списка, вы должны использовать это:
Обратите внимание, что для функции prop () требуется JQuery v1.6 или новее.
Посмотрим, как бы вы использовали эти две функции.
Предположим, у вас есть выпадающий список названий месяцев.
Вы можете добавить кнопку «Предыдущий месяц» и «Следующий месяц», которая просматривает выбранный в данный момент элемент раскрывающегося списка и изменяет его на предыдущий / следующий месяц:
А вот JavaScript, который будут запускать эти кнопки:
Следующий сайт также полезен, чтобы показать, как заполнить раскрывающийся список данными JSON:
http://mikesknowledgebase.com/pages/Services/WebServices-Page8.htm
Фу !!
Надеюсь это поможет.
источник
Посмотрев на некоторые решения, это сработало для меня.
У меня есть один раскрывающийся список с некоторыми значениями, и я хочу выбрать то же значение из другого раскрывающегося списка ... Итак, сначала я вставил переменную a
selectIndex
моего первого раскрывающегося списка .Затем я выбираю этот индекс во втором раскрывающемся списке.
Замечания:
Я думаю, что это самое короткое, надежное, общее и элегантное решение.
Потому что в моем случае я использую атрибут данных выбранного параметра вместо атрибута значения. Так что если у вас нет уникального значения для каждого параметра, вышеуказанный метод самый короткий и приятный!
источник
Я знаю, что это старый вопрос, и вышеуказанные решения работают хорошо, за исключением некоторых случаев.
подобно
Таким образом, элемент 4 будет отображаться как «Выбранный» в браузере, и теперь вы хотите изменить значение на 3 и отобразить «Item3» как выбранный вместо Item4.Так, как указано выше, если вы используете
Вы увидите, что элемент 3 выбран в браузере. Но когда вы обрабатываете данные в php или asp, вы найдете выбранное значение как «4». Причина в том, что ваш HTML будет выглядеть так.
и он получает последнее значение как «4» на другом языке.
ТАК МОЕ ЗАКЛЮЧИТЕЛЬНОЕ РЕШЕНИЕ НА ЭТОМ ОТНОШЕНИИ
РЕДАКТИРОВАТЬ : Добавить одинарные кавычки вокруг "+ newselectedIndex +", чтобы те же функции можно было использовать для нечисловых значений.
Итак, на самом деле я удалил выбранный атрибут и затем сделал новый как выбранный.
Буду признателен за комментарии старших программистов, таких как @strager, @ y0mbo, @ISIK и других.
источник
Если у нас есть раскрывающийся список с заголовком «Классификация данных»:
Мы можем получить его в переменную:
Затем поместите в другую переменную значение, которое мы хотим иметь в раскрывающемся списке:
Затем мы можем использовать поле, в которое мы поместили
dataClsField
, сделать поискmyValue
и выбрать его, используя.prop()
:Или, вы можете просто использовать
.val()
, но ваш селектор.
может использоваться, только если он соответствует классу в раскрывающемся списке, и вы должны использовать кавычки для значения в скобках, или просто использовать переменную, которую мы установили ранее:источник
Я сталкивался с этим много раз при загрузке данных из вызова Ajax. Я тоже использую .NET, и требуется время для настройки на clientId при использовании селектора jQuery. Чтобы устранить возникшую проблему и избежать добавления
setTimeout
свойства, вы можете просто вставить «async: false
» в вызов Ajax, и у DOM будет достаточно времени для возврата объектов, которые вы добавляете в выбор. Небольшой образец ниже:источник
Просто примечание - я использовал селекторы подстановочных знаков в jQuery для захвата элементов, которые скрыты с помощью идентификаторов ASP.NET CLient - это также может вам помочь:
Обратите внимание, что идентификатор * подстановочный знак - это найдет ваш элемент, даже если имя «ctl00 $ ctl00 $ ContentPlaceHolder1 $ ContentPlaceHolder1 $ MyDropDown»
источник
Я использую функцию расширения для получения идентификаторов клиента, например так:
Затем вы можете вызвать элементы управления ASP.NET в jQuery следующим образом:
источник
Другой вариант - установить параметр управления ClientID = "Static" в .net, а затем вы можете получить доступ к объекту в JQuery по заданному вами идентификатору.
источник
Использование
$("select[name$='MyDropDown']").val()
.источник
$
чтобы оно соответствовало полному совпадению, а не «заканчивалось на». Но ваше предложение, вероятно, быстрее, чем сопоставление только с именем класса. Даже быстрее, хотя будетelement.classname
или#idname
.Как вы загружаете значения в раскрывающийся список или определяете, какое значение выбрать? Если вы делаете это с помощью Ajax, то причиной, по которой вам нужна задержка перед выбором, может быть то, что значения не были загружены во время выполнения рассматриваемой строки. Это также объясняет, почему это работает, когда вы помещаете в строку оператор оповещения перед установкой статуса, поскольку действие оповещения даст достаточно времени для загрузки данных.
Если вы используете один из методов jjuery Ajax, вы можете указать функцию обратного вызова и затем вставить ее
$("._statusDDL").val(2);
в функцию обратного вызова.Это был бы более надежный способ решения проблемы, поскольку вы можете быть уверены, что метод выполняется, когда данные были готовы, даже если это заняло более 300 мс.
источник
ClientIDMode = "Static"
источник
В моем случае я смог заставить его работать, используя метод .attr ().
источник