使用 CSS 隐藏多个下拉框进行打印
Hide multiple Dropdown boxs using CSS for printing
在我的 c# mvc 页面上,我在页面上显示了几个下拉框,我使用媒体查询为打印和屏幕呈现不同的视图。
我的问题是,如果所选选项值为“”,是否有一种方法(使用CSS)隐藏所有下拉框。 (该值的文本是“< Select >”)。
这样在打印的时候,会打印出如下内容:
Title
而不是:
Title < Select >
只是想说得更清楚,
如果选择的选项不是“”那么我需要在打印时显示它,
所以如下:
Title Mr
打印时显示为:
Title Mr
这是我的下拉菜单之一:
<select id="Alias_Title" name="Alias.Title">
<option value="">< Select ></option>
<option value="1">Mr</option>
<option value="2">Mrs</option>
<option value="3">Ms</option>
</select>
不知道用CSS能不能实现,如果不能用Jquery能不能实现?
谢谢
使用jquery,可以这样写
if($('#Alias_Title').val().length == 0) { // int value
$('#Alias_Title').hide();
}
您可以使用$.fn.filter()找到所有值为“”的select然后添加一个隐藏的class
$(function () {
$('select').filter(function () {
return $(this).val() == "";
}).addClass('hidden');
});
添加一个CSSclass
.hidden{
display: none !important;
}
CSS 打印(来自 BootStrap)
@media print {
.visible-print-block {
display: block !important;
}
}
@media print {
.hidden-print {
display: none !important;
}
}
具有 hidden-print
CSS class 的元素无法打印。
代码:
<select id="Alias_Title" name="Alias.Title" class="hidden-print">
<option value="">< Select ></option>
<option value="1">Mr</option>
<option value="2">Mrs</option>
<option value="3">Ms</option>
</select>
<script type="text/javascript">
$(function () {
$('select').change(function () {
if (!$(this).val()) {
$(this).addClass('hidden-print');
} else {
$(this).removeClass('hidden-print');
}
});
});
</script>
以下解决方案结合了@Satpal 和@General-Doomer 对问题的回答。
脚本
<script type="text/javascript">
$(function () {
$('select').filter(function () {
return $(this).val() == "";
}).addClass('hidden-print');
$('select').change(function () {
if ($(this).val() == "") {
$(this).addClass('hidden-print');
} else {
$(this).removeClass('hidden-print');
}
});
});
</script>
CSS class:
.hidden-print{
display: none !important;
}
当用户尝试在不触摸任何下拉框的情况下打印页面时,filter() 函数起作用。
change() 函数适用于用户在更改下拉框的值后尝试打印页面。
在我的 c# mvc 页面上,我在页面上显示了几个下拉框,我使用媒体查询为打印和屏幕呈现不同的视图。
我的问题是,如果所选选项值为“”,是否有一种方法(使用CSS)隐藏所有下拉框。 (该值的文本是“< Select >”)。
这样在打印的时候,会打印出如下内容:
Title
而不是:
Title < Select >
只是想说得更清楚,
如果选择的选项不是“”那么我需要在打印时显示它, 所以如下:
Title Mr
打印时显示为:
Title Mr
这是我的下拉菜单之一:
<select id="Alias_Title" name="Alias.Title">
<option value="">< Select ></option>
<option value="1">Mr</option>
<option value="2">Mrs</option>
<option value="3">Ms</option>
</select>
不知道用CSS能不能实现,如果不能用Jquery能不能实现?
谢谢
使用jquery,可以这样写
if($('#Alias_Title').val().length == 0) { // int value
$('#Alias_Title').hide();
}
您可以使用$.fn.filter()找到所有值为“”的select然后添加一个隐藏的class
$(function () {
$('select').filter(function () {
return $(this).val() == "";
}).addClass('hidden');
});
添加一个CSSclass
.hidden{
display: none !important;
}
CSS 打印(来自 BootStrap)
@media print {
.visible-print-block {
display: block !important;
}
}
@media print {
.hidden-print {
display: none !important;
}
}
具有 hidden-print
CSS class 的元素无法打印。
代码:
<select id="Alias_Title" name="Alias.Title" class="hidden-print">
<option value="">< Select ></option>
<option value="1">Mr</option>
<option value="2">Mrs</option>
<option value="3">Ms</option>
</select>
<script type="text/javascript">
$(function () {
$('select').change(function () {
if (!$(this).val()) {
$(this).addClass('hidden-print');
} else {
$(this).removeClass('hidden-print');
}
});
});
</script>
以下解决方案结合了@Satpal 和@General-Doomer 对问题的回答。
脚本
<script type="text/javascript">
$(function () {
$('select').filter(function () {
return $(this).val() == "";
}).addClass('hidden-print');
$('select').change(function () {
if ($(this).val() == "") {
$(this).addClass('hidden-print');
} else {
$(this).removeClass('hidden-print');
}
});
});
</script>
CSS class:
.hidden-print{
display: none !important;
}
当用户尝试在不触摸任何下拉框的情况下打印页面时,filter() 函数起作用。 change() 函数适用于用户在更改下拉框的值后尝试打印页面。