jQuery - установка выбранного значения элемента управления select через его текстовое описание

Проблема в том, что в этом коде:

args = {'form': form, 'Residential': zones['Residential'],
        'School': zones['School'], 'Religious': zones['Religious'],
        'Childcare': zones['Childcare'], 'Park': zones['Park']}
return render(request, self.template_name, args)

нет переменной с именем args, передаваемой шаблону. Переменные, доступные в шаблоне, являются в точности ключами словаря, который вы здесь назвали args - так form, School, Religious, Childcare и Park. Шаблон ничего не знает об имени переменной, которое вы выбрали для использования в самом словаре (на самом деле здесь нет ничего необычного в том, чтобы передавать здесь словарь словаря без имени переменной - хотя вполне законно поместить его в переменную, если это более удобно) .

Таким образом, условия {% if args %} всегда интерпретировались как False, потому что args не существует в том, что касается шаблона.

И есть еще одна ошибка: в языке шаблонов Django, в отличие от самого Python, доступ к любому свойству любого рода осуществляется через точечную запись, а не в квадратных скобках. Так что Childcare[0] не будет работать вообще - вместо этого вам нужно сделать Childcare.0.

В официальной документации есть много информации о языке шаблонов Django. .

522
задан 04.05.2020, 12:29

6 ответов

Выберите по описанию для jQuery v1.6 +

var text1 = 'Two';
$("select option").filter(function() {
  //may want to use $.trim in here
  return $(this).text() == text1;
}).prop('selected', true);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<select>
  <option value="0">One</option>
  <option value="1">Two</option>
</select>

версии jQuery ниже 1.6 и больше, чем или равный 1,4

var text1 = 'Two';
$("select option").filter(function() {
  //may want to use $.trim in here
  return $(this).text() == text1;
}).attr('selected', true);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.4.0/jquery.min.js"></script>

<select>
  <option value="0">One</option>
  <option value="1">Two</option>
</select>

Примечание что, в то время как этот подход будет работать в версиях, которые являются выше 1.6, но меньше чем 1,9, это было удержано от использования с тех пор 1.6. Это не будет работать в jQuery 1.9 +.

<час>

Предыдущие версии

val() должны обработать оба случая.

$('select').val('1'); // selects "Two"
$('select').val('Two'); // also selects "Two"
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.2.3/jquery.min.js"></script>

<select>
  <option value="0">One</option>
  <option value="1">Two</option>
</select>
750
ответ дан 04.05.2020, 12:35
  • 1
    Первый ответ на этот вопрос, кажется, сообщение решения 1.3.x stackoverflow.com/questions/3644449/… – DA. 04.05.2020, 12:35
  • 2
    В более свежих версиях jQuery, .val (' not-an-option-value') сбросит выбор к праву преимущественной покупки. – dland 04.05.2020, 12:35
  • 3
    Обратите внимание, что jQuery 1.4 теперь изменил это поведение для выбора value, если атрибут был определен, и только выбирает текстом, если эти value атрибут отсутствует. Таким образом в этом примере $('select').val('Two') выберет вторую опцию в 1.3.x, но ни в чем не выполнит 1.4.x. – Crescent Fresh 04.05.2020, 12:36
  • 4
    Так, what' s лучший способ сделать это в 1,4 теперь? – JR Lawhorne 04.05.2020, 12:36
  • 5
    Это чувствует себя подобно ему shouldn' t работа (кажется, что это могло быть неоднозначно), но это на самом деле должно хорошо работать для меня. Спасибо. – DanSingerman 04.05.2020, 12:36

Попробуйте это... для выбора опции с текстом myText

$("#my-Select option[text=" + myText +"]").attr("selected","selected");
90
ответ дан 04.05.2020, 12:31
  • 1
    Нечетное управление версиями со стороны SQlite. – whatnick 18.10.2019, 13:18
  • 2
    Этот метод, кажется, не работает на 1,9 – Mark W 04.05.2020, 12:31
  • 3
    @spoulson' s ответ работал на меня... Я пытался сделать это без .each – Jay Corbett 04.05.2020, 12:32
  • 4
    @MarkW Для 1,9, используйте .prop вместо .attr; причина изменения состоит в том, который в 1,9 jQuery отключил старые взломы, которые позволяют Вам использовать .attr для изменения некоторых свойств DOM, а также HTML-атрибутов. (Google javascript dom properties vs attributes, если Вы don' t знают различие.) – Mark Amery 04.05.2020, 12:32
  • 5
    Во многих случаях, этот подход doesn' t работают, к сожалению. Я даже должен был решить классику $("#my-Select option[text=" + myText +"]").get(0).selected = true; стиль время от времени: (... – Shahriyar Imanov 04.05.2020, 12:33
  • 6
    Удостоверьтесь, что Вы сначала удаляете выбранный атрибут перед сбросом, иначе это, будет казаться, не будет работать (работы на меня в 1,9) – esse 04.05.2020, 12:33

Я не протестировал это, но это могло бы работать на Вас.

$("select#my-select option")
   .each(function() { this.selected = (this.text == myVal); });
139
ответ дан 04.05.2020, 12:32
  • 1
    pysqlite адаптер базы данных является полностью отдельным проектом из базового sqlite3 проекта базы данных, таким образом, номера версий не связаны. См. stackoverflow.com/questions/1545479/… для расширенного обсуждения. – Ned Deily 18.10.2019, 13:17

Получите детей избранного поля; цикл через них; при нахождении того, Вы хотите, устанавливаете его как выбранную опцию; возвратите false для остановки цикличного выполнения.

-1
ответ дан 04.05.2020, 12:34

смотрите на jQuery selectedbox плагин

selectOptions(value[, clear]): 

опции Select значением, с помощью строки в качестве параметра $("#myselect2").selectOptions("Value 1");, или регулярное выражение $("#myselect2").selectOptions(/^val/i);.

уже можно также очистить выбранные опции: $("#myselect2").selectOptions("Value 2", true);

4
ответ дан 04.05.2020, 12:37
  • 1
    Это фактически неправильно. Matlab может выполненные функции от командной строки. Попробуйте matlab -nodisplay "funcname arg1 arg2 arg3 argN". Единственное ограничение - то, что всеми аргументами будут строки. – gerrit 04.01.2020, 16:46
$("#myselect option:contains('YourTextHere')").val();

возвратит значение первой опции, содержащей Ваше текстовое описание. Протестированный это и работы.

21
ответ дан 04.05.2020, 12:40
  • 1
    Обратите внимание, что, по крайней мере, в моей установке, с помощью передач одинарных кавычек за приблизительно 1$ в переменной среды как строка, и не используя кавычек приблизительно 1$ передает его в как число. Кроме того, в моей установке, если func является функцией.m файл, Вы don' t должен поместить выход в двойные кавычки. – Grittathh 04.01.2020, 16:47
  • 2
    Кроме того, Вы могли объединить attr в цепочку (" selected" " selected") на обернутый набор вместо val () и это работало бы подобное CarolinaJay65' s ответ – Russ Cam 04.05.2020, 12:41
  • 3
    примите во внимание, это получит только значение для права преимущественной покупки, соответствующего тексту. – Russ Cam 04.05.2020, 12:41
  • 4
    Спасибо - я думаю, что это могло бы быть версией, которую я использую, поскольку у меня также должна быть логика, для того, когда нет никакого совпавшего текста, и это кажется самым легким механизмом для способности сделать это. – DanSingerman 04.05.2020, 12:41

Теги

Похожие вопросы