javascript - jQuery和HTML,如何根据另一个表单的值隐藏表单?
问题描述
我需要使用 JavaScript 隐藏基于另一个表单的值的表单。
假设我们有以下 HTML:
<div class="form-row">
<div class="form-group col-2 0 mb-0" id="one" >
{{form.x|as_crispy_field}}
</div>
<div class="form-group col-2 0 mb-0 d-none" id="two">
{{form.y|as_crispy_field}}
</div>
</div>
现在,假设我想隐藏 y 的形式,x 的值等于“隐藏”。如何使用 jQuery 获得它?
我尝试了以下代码,但它不起作用:
function check_field_value() {
if($(this).val() == 'Hide') {
$('#two').removeClass('d-none');
} else {
$('#two').addClass('d-none');
}
}
// this is executed once when the page loads
$(document).ready(function() {
$('#one').change(check_field_value);
check_field_value.call($('#one').get(0));
});
编辑
关于 form.y 的 Html 如下:
<select name="y" class="select form-control" id="id_y">
<option value="Hide">Hide</option>
<option value="Not Hide">Not Hide</option>
</select>
解决方案
同样,正如评论中所指出的,您在这里处理的是两个表单元素而不是两个表单。您正在使用正确的表单事件,但没有针对正确的表单元素。您可以这样做:
$('#id_y').on('change', function() {
if( this.value === 'Hide' ) {
$('#one').hide();
} else {
$('#one').show();
}
})
.change();
演示:
$('#id_y').on('change', function() {
if( this.value === 'Hide' ) {
$('#one').hide();
} else {
$('#one').show();
}
})
.change();
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="form-row">
<div class="form-group col-2 0 mb-0" id="one" >
Some form element here
</div>
<div class="form-group col-2 0 mb-0 d-none" id="two">
<select name="y" class="select form-control" id="id_y">
<option value="Hide">Hide</option>
<option value="Not Hide">Not Hide</option>
</select>
</div>
</div>
如果您的选项元素是:
<option value="hide">Hide</option>
<option value="show">Not Hide</option>
那么你的代码就是:
$('#id_y').on('change', function() {
$('#one')[this.value]();
})
.change();
演示:
$('#id_y').on('change', function() {
$('#one')[this.value]();
})
.change();
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="form-row">
<div class="form-group col-2 0 mb-0" id="one" >
Some form element here
</div>
<div class="form-group col-2 0 mb-0 d-none" id="two">
<select name="y" class="select form-control" id="id_y">
<option value="hide">Hide</option>
<option value="show">Not Hide</option>
</select>
</div>
</div>
推荐阅读
- c# - 蓝牙 Radio.StateChanged 事件触发两次
- android - 如何控制我的 android 可穿戴设备上的主页按钮在按下时的作用?
- node.js - 在nodejs vscode中调试时进程以代码2退出
- json - Flutter:显示嵌套 JSON 数据中的指定行
- ssis - 如何使 SSIS 数据流每 5 分钟后频繁执行
- node.js - Angular Mat 复选框 - 将选定的行传递给后端逻辑
- python - 围绕单独点的密度聚类 - Python
- jquery - 如何在 asp.net 核心中使用 ajax 将表单发送到控制器?
- javascript - 如何在对象数组中添加表的整行数据?
- javascript - 将 2 个参数传递给 .withSuccessHandler()