У меня есть простая проблема, я не знаю, как управлять, у меня есть простой выбор, который получает полный список параметров, которые я использую JS, чтобы отфильтровать показанный вариант на основе другого выбора (источник: http://jsfiddle.net/pz9cjmLg/5/ )
, когда я нажимаю на стрелку вправо, чтобы выбрать, список отображается первый вариант пуст, но я хотел бы настроить размер списка в соответствии с размером показанных параметров, а не общий размер списка (см. рисунок ниже)
Я пытаюсь использовать size = "3" (например), но это не то, что мне нужно
html
<form id="form_reallocation" method="POST" class="post-form">
{% csrf_token %}
<div class="form-group">
<label for="exampleFormControlSelect1"><strong>{% trans 'Patient code number :' %}</strong></label>
<select required name="patients" class="form-control" id="patients" data-patient-url="{% url 'randomization:patient' %}">
<option value=""></option>
{% for patient in patients %}
<option value="{{ patient.ran_log_sit }}/{{ patient.ran_num }}">{{ patient.ran_num }}</option>
{% endfor %}
</select>
</div>
<br><br>
<button id="reallocate" type="submit" class="btn btn-primary">{% trans 'Reallocate' %}</button>
</form>
JS
sel.on('change', function () {
selected_site = this.value;
var value = site_abbreviation(parseInt(selected_site));
var options = $("#patients option");
// on commence par masquer toutes les options
// options.hide();
$("#patients option[value]").filter(function() {
return +$(this).val() != "";
}).hide();
// on affiches les options correspondant au site sélectionné
var op = options.filter(function () {
// return value == $(this).val().slice(4,6); // on retourne les options dont la valeur (numéro patient) contient le code lettre du site
return value == $(this).val().slice(0,2); // gestion des patients pré-inclus dans un site et randomisé dans un autre centre
}).show();
$("#patients").val(op.eq(0).val());
// $("#patients")[0].selectedIndex = 0;
$("#patients option:selected").prop("selected", false);
$("#patients option:first").attr('selected','selected').change();
})