我希望我的标题是正确的:我有一个下拉列表,来自一个表单作为EntityType,值来自实体类。代码:
->add('type', EntityType::class, array(
'class' => 'DocumentBundle:DocumentType',
'label' => 'label.type',
'property' => 'translationKey',
'required' => true,
'multiple' => false,
'expanded' => false,
'empty_value' => 'label.select_type',
'choice_translation_domain' => 'Documents'
))
->add('vka_number', 'text', array(
'label' => 'label.vka_number',
'required' => false,
'translation_domain' => 'Documents'))
第二个是文本字段(vka_number),我只想在选择该下拉列表中的特定值时显示该字段 在我的树枝模板中,我渲染元素:
<div class="row">
<div class="col-md-6" id="documentDropdown">
{{ form_row(form.type) }}
</div>
<div class="col-md-6" id="vka">
{{ form_row(form.vka_number) }}
</div>
</div>
我正在考虑像这样的javascript函数:
<script>
$(document).ready(function(){
$('#documentDropdown').on('change', function(){
if (this.value == 'Contract')
{
$('#vka').show();
}
else {
$('#vka').hide();
}
});
});
</script>
但是它没有用,我认为这是因为它无法访问下拉列表中的值,因为它们不是硬编码的,而是数据库条目。 'Contract'将是“使得”vka_number文本字段出现的条目(id = 1)。
答案 0 :(得分:1)
我从your previous question Sonja复制了html代码,你似乎还在继续问同样的问题。我在这个jsfiddle中使用了那段代码:
https://jsfiddle.net/alvinbunk/to9qodwx/
您可以使用jsfiddle来试验您的jQuery代码,以找出问题所在。正如您所看到的,代码确实有效并且隐藏了vka
id分区。它实际上与值来自数据库的事实无关。确保您的html代码中的各种元素中没有重复的ID。在浏览器中使用“查看源代码”查看呈现的代码。
顺便说一下,我在这个答案上花了至少15分钟,而在另一个答案上花了15到30分钟。请注意,StackOverflow上的人非常忙碌,最好非常清楚地提出您的问题。
编辑#2 - 基于评论
使用此jQuery代码:
<script>
$(document).ready(function(){
$('#documentDropdown').on('change', function(){
if (this.value == '1')
{
$('#vka').show();
}
else {
$('#vka').hide();
}
});
});
</script>
这应该有效。
答案 1 :(得分:1)
这是我的javascript函数,最终解决了我的问题。
$(document).ready(function () {
$('#type ').change(function() {
if ($('select[id$="_type"]>option:selected').text() == "Contract") {
$('#vka_number ').show();
}
else {
$('#vka_number').hide();
}
});
});