在所选选项更改时显示和隐藏 html 元素
Show and hide html element on selected option change
在 JSP 页面中,我有一个下拉列表。选择列表的第一个元素时,我希望文本区域在单击时显示正确。我是 Javascript/Jquery 的新手,所以我显然在函数中遗漏了一些东西(文本区域从未出现)。希望有人能帮忙。
这是HTML:
<tr class="odd gradeX">
<td class="col-lg-3">
<div>
<label>Show text area</label>
<select id="show" class="form-control" name="show_text_area" onchange="change()">
<option value="1">YES</option>
<option value="0">NO</option>
</select>
</div>
</td>
<td class="col-lg-3">
<div>
<label>Text area</label>
<textarea id="text_area" class="form-control" type="text" name="text_area" placeholder="Write something" rows="5" cols="50" style="display: none"></textarea>
</div>
</td>
</tr>
这是 JSP:
之上的函数
<script> function change() {
var selectBox = document.getElementById("show");
var selected = selectBox.options[selectBox.selectedIndex].value;
var textarea = document.getElementById("text_area");
if(selected === '1'){
textarea.show();
}
else{
textarea.hide();
}
});</script>
您可以使用jQuery如下
<script> function change() {
var selectBox = document.getElementById("show");
var selected = selectBox.options[selectBox.selectedIndex].value;
if(selected === '1'){
$('#text_area').show();
}
else{
$('#text_area').hide();
}
}</script>
您也可以使用 jquery。
$('#show').val();
if( $('#show').val() == "1")
{
$('#text_area').show();
OR
$("#text_area").css("visibility", "visible");
}else
{
$('#text_area').hide();
OR
$("#text_area").css("visibility", "hidden");
}
您也可以使用 jQuery,如下所示。
$("#show").change(function(){
if($(this).val()=="1")
{
$("#text_area").show();
}
else
{
$("#text_area").hide();
}
});
你的函数是正确的,但是js元素class没有show()和hide()方法。您可以使用原型来实现它。举个例子
Element.prototype.hide(){
this.style.display = "hidden";
}
Element.prototype.show(style){
style = style ? style : "block";
this.style.display = style;
}
但最好使用 jquery 或类似的东西。
var drpVal= $('#show').val();
if( drpVal == "1")
{
$('#text_area').show();
// or u can use
$("#text_area").css("display", "");
}
else{
$('#text_area').hide();
// or u can use
$("#text_area").css("display", "none");
}
你可以在 jQuery 中做到这一点......比如
“
$(文档).ready(函数(){
var seletVal=$('#show option:selected').val();
if(selectVal=='1')
$('#textareaId').show();
else
$('#textareaId').hide();
});
"
使用jQuery.
从
中删除 onchange="change()"
函数
<select id="show" class="form-control" name="show_text_area" onchange="change()">
在您的 select 元素上寻找更改事件。
$('#show').on('change', function () {
var optionSelected = $("option:selected", this);
var valueSelected = this.value;
if(valueSelected == 1){
$("#text_area").show();
} else {
$("#text_area").hide();
}
});
你的函数末尾有误 - 删除最后一个 );
最后应该是:
<select id="show" class="form-control" name="show_text_area" onchange="change(this)">
function change(obj) {
var selectBox = obj;
var selected = selectBox.options[selectBox.selectedIndex].value;
var textarea = document.getElementById("text_area");
if(selected === '1'){
textarea.style.display = "block";
}
else{
textarea.style.display = "none";
}
}
您正在通过 document.getElementById returns 普通 javascript 对象获取 html 元素。
Jquery 方法 hide() 和 show() 仅适用于 jquery 对象。
不过你想达到的效果都可以通过简单的方法实现Javascript,只是做一些简单的改动。
分别使用textarea.style.display = "block"
和textarea.style.display = "none"
代替show()和hide();
并删除代码末尾的 );
。
使用 fiddle link 作为工作示例。 fiddle link
试试这个代码:
// This will create an event listener for the change action on the element with ID 'show'
$('#show').change(function() {
// If checkbox is 'checked'
if($(this).is(':checked')) {
// show the element that has the id 'txt_area'
$('#text_area').show();
} else {
// hide it when not checked
$('#text_area').hide();
}
});
在 JSP 页面中,我有一个下拉列表。选择列表的第一个元素时,我希望文本区域在单击时显示正确。我是 Javascript/Jquery 的新手,所以我显然在函数中遗漏了一些东西(文本区域从未出现)。希望有人能帮忙。
这是HTML:
<tr class="odd gradeX">
<td class="col-lg-3">
<div>
<label>Show text area</label>
<select id="show" class="form-control" name="show_text_area" onchange="change()">
<option value="1">YES</option>
<option value="0">NO</option>
</select>
</div>
</td>
<td class="col-lg-3">
<div>
<label>Text area</label>
<textarea id="text_area" class="form-control" type="text" name="text_area" placeholder="Write something" rows="5" cols="50" style="display: none"></textarea>
</div>
</td>
</tr>
这是 JSP:
之上的函数<script> function change() {
var selectBox = document.getElementById("show");
var selected = selectBox.options[selectBox.selectedIndex].value;
var textarea = document.getElementById("text_area");
if(selected === '1'){
textarea.show();
}
else{
textarea.hide();
}
});</script>
您可以使用jQuery如下
<script> function change() {
var selectBox = document.getElementById("show");
var selected = selectBox.options[selectBox.selectedIndex].value;
if(selected === '1'){
$('#text_area').show();
}
else{
$('#text_area').hide();
}
}</script>
您也可以使用 jquery。
$('#show').val();
if( $('#show').val() == "1")
{
$('#text_area').show();
OR
$("#text_area").css("visibility", "visible");
}else
{
$('#text_area').hide();
OR
$("#text_area").css("visibility", "hidden");
}
您也可以使用 jQuery,如下所示。
$("#show").change(function(){
if($(this).val()=="1")
{
$("#text_area").show();
}
else
{
$("#text_area").hide();
}
});
你的函数是正确的,但是js元素class没有show()和hide()方法。您可以使用原型来实现它。举个例子
Element.prototype.hide(){
this.style.display = "hidden";
}
Element.prototype.show(style){
style = style ? style : "block";
this.style.display = style;
}
但最好使用 jquery 或类似的东西。
var drpVal= $('#show').val();
if( drpVal == "1")
{
$('#text_area').show();
// or u can use
$("#text_area").css("display", "");
}
else{
$('#text_area').hide();
// or u can use
$("#text_area").css("display", "none");
}
你可以在 jQuery 中做到这一点......比如 “ $(文档).ready(函数(){
var seletVal=$('#show option:selected').val();
if(selectVal=='1')
$('#textareaId').show();
else
$('#textareaId').hide();
});
"
使用jQuery.
从
中删除onchange="change()"
函数<select id="show" class="form-control" name="show_text_area" onchange="change()">
在您的 select 元素上寻找更改事件。
$('#show').on('change', function () { var optionSelected = $("option:selected", this); var valueSelected = this.value; if(valueSelected == 1){ $("#text_area").show(); } else { $("#text_area").hide(); } });
你的函数末尾有误 - 删除最后一个 );
最后应该是:
<select id="show" class="form-control" name="show_text_area" onchange="change(this)">
function change(obj) {
var selectBox = obj;
var selected = selectBox.options[selectBox.selectedIndex].value;
var textarea = document.getElementById("text_area");
if(selected === '1'){
textarea.style.display = "block";
}
else{
textarea.style.display = "none";
}
}
您正在通过 document.getElementById returns 普通 javascript 对象获取 html 元素。 Jquery 方法 hide() 和 show() 仅适用于 jquery 对象。
不过你想达到的效果都可以通过简单的方法实现Javascript,只是做一些简单的改动。
分别使用textarea.style.display = "block"
和textarea.style.display = "none"
代替show()和hide();
并删除代码末尾的 );
。
使用 fiddle link 作为工作示例。 fiddle link
试试这个代码:
// This will create an event listener for the change action on the element with ID 'show'
$('#show').change(function() {
// If checkbox is 'checked'
if($(this).is(':checked')) {
// show the element that has the id 'txt_area'
$('#text_area').show();
} else {
// hide it when not checked
$('#text_area').hide();
}
});