在选定的选项更改上显示和隐藏html元素

时间:2015-01-13 12:12:21

标签: javascript jquery html jsp

在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>

10 个答案:

答案 0 :(得分:9)

你的功能结束时有错误 - 删除最后一个);

最后它应该是:

<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";
    }
}

答案 1 :(得分:4)

您可以使用以下

的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>

答案 2 :(得分:1)

你也可以使用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");
  }

答案 3 :(得分:1)

  1. 使用jQuery。

  2. 中删除onchange="change()"功能
    <select id="show" class="form-control" name="show_text_area" onchange="change()">
    
  3. 在select元素上查找更改事件。

    $('#show').on('change', function () {
       var optionSelected = $("option:selected", this);
       var valueSelected = this.value;
       if(valueSelected == 1){
           $("#text_area").show();
       } else {
           $("#text_area").hide();
       }
    });
    
  4. Fiddle

答案 4 :(得分:1)

试试这段代码:

// 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();
    }
});

答案 5 :(得分:0)

你也可以按照以下方式使用jQuery。

$("#show").change(function(){
   if($(this).val()=="1")
   {    
       $("#text_area").show();
   }
   else
   {
       $("#text_area").hide();
   }
});

<强> Demo

答案 6 :(得分:0)

您的函数是正确的,但是js Element类没有show()和hide()方法。您可以使用原型实现它。作为一个例子

Element.prototype.hide(){
this.style.display = "hidden";
} 
Element.prototype.show(style){
style = style ? style : "block";
this.style.display = style;
}

但最好使用jquery或类似的东西。

答案 7 :(得分:0)

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");
 }

答案 8 :(得分:0)

你可以在jQuery中这样做.....喜欢 &#34;     $(文件)。就绪(函数(){

var seletVal=$('#show option:selected').val();
if(selectVal=='1')
$('#textareaId').show();
else
$('#textareaId').hide();
});

&#34;

答案 9 :(得分:0)

您通过 document.getElementById 获取html元素,返回正常的javascript对象。 Jquery方法 hide() show()仅适用于 jquery对象。

但无论你想要实现什么,都可以通过简单的Javascript来实现,只做了一些简单的改动。

而不是show()和hide()分别使用textarea.style.display = "block"textarea.style.display = "none";

并删除代码末尾的);

使用小提琴链接作为工作示例。 fiddle link