【问题标题】:How to display a hidden checkbox field in a JSP page on the basis of specific value selected from dropdown in Struts 1.3 framework?如何根据从 Struts 1.3 框架中的下拉列表中选择的特定值在 JSP 页面中显示隐藏的复选框字段?
【发布时间】:2017-01-09 11:50:21
【问题描述】:

我想在Struts 1.3 framework 中使用Nested TagsJavascript 等创建一个复选框,只有当用户从选择dropdown 中选择特定值并且checkbox 的值应该被重置时才会显示当用户从dropdown 中选择其他值时。

【问题讨论】:

  • 隐藏是什么意思?是disabled 还是display:none
  • 我用过display:none

标签: javascript css struts-1


【解决方案1】:

由于你没有发布你的代码,我自己管理它,试图提供答案

jsFiddle

 $(document).ready(function () {
     $(function () {
         $("#id-select").change( function(){
         	var $this = $(this);
            $('input[type=checkbox]').each( function(){
            	if( $(this).val() == $this.val()) {
              	
                $(this).parent().siblings().css('display', 'none');
              	$(this).parent().css('display', 'block');
                
              	$('input[type=checkbox]').css('display', 'none');
              	$(this).css('display', 'block');
              }
            })
          });
     });
 });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id='id-select'>
  <option value="">Select</option>
  <option value="volvo">Volvo</option>
  <option value="saab">Saab</option>
  <option value="opel">Opel</option>
  <option value="audi">Audi</option>
</select>
<br>
<div>

<label for="volvo" style='display:none;'>
  <input type="checkbox" id="volvo" value="volvo" style='display:none;'>
volvo</label>

<label for="saab" style='display:none;'>
  <input type="checkbox" id="saab" value="saab" style='display:none;'> saab</label>
  
<label for="opel" style='display:none;'>
  <input type="checkbox" id="opel" value="opel" style='display:none;'> opel</label>
  
<label for="audi" style='display:none;'>
<input type="checkbox" id="audi" value="audi" style='display:none;'>
audi</label>

</div>

更新使用JavaScript
@Arvind 您好,我已将其更改为与 JavaScript 一起使用,
可能需要大量改进,我不在 JavaScript

中编码

function showCheckBox($this) {
	  var cols = document.getElementsByClassName('class-label');
    for(i=0; i<cols.length; i++) {
      cols[i].style.display =    'none';
    }
    var cols = document.getElementsByClassName('class-cb');
    for(i=0; i<cols.length; i++) {
      cols[i].style.display =    'none';
      cols[i].checked = false;
    }
	var array = document.getElementsByTagName("input");
  for(var ii = 0; ii < array.length; ii++)
  {
     if(array[ii].type == "checkbox")
     {
        if(array[ii].value == $this.value )
         {
          array[ii].style.display = 'block';
          array[ii].parentElement.style.display = 'block';
         } 
     }
  }
}
<select id='id-select' onchange="showCheckBox(this);">
  <option value="">Select</option>
  <option value="volvo">Volvo</option>
  <option value="saab">Saab</option>
  <option value="opel">Opel</option>
  <option value="audi">Audi</option>
  <option value="option1">option1</option>
  <option value="option2">option2</option>
</select>

<div>

<label for="volvo" class='class-label' style='display:none;'>
  <input type="checkbox" class='class-cb' id="volvo" value="volvo" style='display:none;'>volvo
</label>

<label for="saab" class='class-label' style='display:none;'>
  <input type="checkbox" class='class-cb' id="saab" value="saab" style='display:none;'> saab
</label>
  
<label for="opel" class='class-label' style='display:none;'>
  <input type="checkbox" class='class-cb' id="opel" value="opel" style='display:none;'>opel
</label>
  
<label for="audi" class='class-label' style='display:none;'>
  <input type="checkbox" class='class-cb' id="audi" value="audi" style='display:none;'>audi
</label>

</div>

【讨论】:

  • 非常感谢您的帮助!这是一个非常好的方法,但我必须学习 Jquery 才能在我的应用程序中理解和实现它。目前,我只是在纯 javascript 和 Struts 1.3 中工作。 @香塔拉姆
  • 那你必须把你的代码,到目前为止你已经尝试过的,所以知道JavaScript的人,将能够帮助你
  • 你真是太好了,你甚至试图用 Javascript 编码来帮助我。此代码将有助于我的实现。再次感谢!
  • 此外,一旦用户从下拉列表中选择其他值,我想重置复选框,我可以使用以下代码实现 document.getElementById("STYLE_ID").checked = false;
  • 我没有得到你..Also I wanted to reset the checkbox once user select other value from dropdown
【解决方案2】:

function showCheckBox($this) {
	  var cols = document.getElementsByClassName('class-label');
    for(i=0; i<cols.length; i++) {
      cols[i].style.display =    'none';
    }
    var cols = document.getElementsByClassName('class-cb');
    for(i=0; i<cols.length; i++) {
      cols[i].style.display =    'none';
    }
	var array = document.getElementsByTagName("input");
  for(var ii = 0; ii < array.length; ii++)
  {
     if(array[ii].type == "checkbox")
     {
        if(array[ii].value == $this.value )
         {
          array[ii].style.display = 'block';
           document.getElementById("volvo").checked = false;
          array[ii].parentElement.style.display = 'block';
         } 
     }
  }
}
<select id='id-select' onchange="showCheckBox(this);">
  <option value="">Select</option>
  <option value="volvo">Volvo</option>
  <option value="saab">Saab</option>
  <option value="opel">Opel</option>
  <option value="audi">Audi</option>
</select>
<div>

<label for="volvo" class='class-label' style='display:none;'>
  <input type="checkbox" class='class-cb' id="volvo" value="volvo" style='display:none;'>volvo
</label>

<label for="saab" class='class-label' style='display:none;'>
  <input type="checkbox" class='class-cb' id="saab" value="saab" style='display:none;'> saab
</label>
  
<label for="opel" class='class-label' style='display:none;'>
  <input type="checkbox" class='class-cb' id="opel" value="opel" style='display:none;'>opel
</label>
  
<label for="audi" class='class-label' style='display:none;'>
  <input type="checkbox" class='class-cb' id="audi" value="audi" style='display:none;'>audi
</label>

</div>

【讨论】:

  • 刚刚在您的代码中添加了以下行来重置沃尔沃复选框 document.getElementById("volvo").checked = false;我无法分享我的代码,因为我的代码对 bean class@Shantaram 的各种属性有很多依赖
猜你喜欢
  • 2022-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多