已编辑:
在我的html模板中,我有一个选择控件,并想基于变量{{specialtyId}}
设置选择的选项。预期结果是将选择所选选项,但实际结果是未选择任何选项。
为了确保不仅仅是受到影响的select
控件,我还使用了类似的循环来基于if
生成带有“选定”或“未选定”的标签陈述测试。
代码如下:
<label>{{specialtyId}} was selected</label>
<br>
{% for s in specialties %}
<label>{{s.specialtyId}} {{s.specialtyName}} {% if s.specialtyId == specialtyId %} selected {% else %} not selected {% endif %}</label><br>
{% endfor %}
<select class="form-control" id="specialtyId" name="specialtyId" required="True">
{% for s in specialties %}
<option value="{{s.specialtyId}}" {% if s.specialtyId == specialtyId %} selected {% endif %}>{{s.specialtyName}}</option>
{% endfor %}
</select>
这里是实际选择的值,生成的标签和生成的下拉菜单的屏幕截图。即使specialtyId
在输出2 was selected
中显然是2,两个标签都没有被“选中”,下拉选项也没有。
因此,我已按照下面建议的答案进行了更改,然后重新启动浏览器并清除了缓存,但仍然没有成功。
答案 0 :(得分:4)
您需要更改:
{% if value == specialtyId %}
收件人:
{% if s.specialtyId == specialtyId %}
Value
与这里无关。
edit :如果仍然无法执行,请检查s.specialtyId
和specialtyId
是否可以进行比较(例如:字符串2不等于整数2)。
答案 1 :(得分:0)
尽管@Bestasttung的回答是正确的,但这不足以解决问题。我尝试过:
<script type="text/javascript" src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0-beta/css/materialize.min.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0-beta/js/materialize.min.js"></script>
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0-beta/css/materialize.min.css">
<div class="container">
<br><br><br><br><br><br><br>
<div class="col s12 m10 offset-m1 l6 offset-l3">
<div class="row">
<form action="" class="col s12 m8 offset-m2 l6 offset-l3">
<div class="row">
<div class="input-field">
<input type=text name="bdate" id="bdate" class="datepicker" required>
<label for="bdate">Birthday</label>
</div>
</div>
<div class="row">
<div class="input-field">
<input name="email" id="email" type="text" class="validate">
<label for="email">Email</label>
</div>
</div>
</form>
</div>
</div>
立即选择了第二个,并且仅选择了第二个。那时我意识到,以某种方式
{% if s.specialtyId == 2 %}
从来都不是真的,事实证明是因为数据类型不同。我将字典中包含的类更改为{% if s.specialtyId == specialtyId %}
类型,而不是Charfield
IntegerField
然后将其由数据库游标填充的方式更改为字符串类型:
class SpecialtyListResult:
specialtyId = models.CharField()
specialtyName = models.CharField(max_length=40)
它现在可以工作。