php如果选中复选框<select> list出现</select>

时间:2014-11-24 15:37:32

标签: javascript jquery html

我有跟随问题的家伙,我已经创建了一个带有ckeckbox的简单页面,我希望当复选框被选中时出现(列表)并且如果没有检查list2出现,而不使用sumbit

<body>
    <input type="checkbox1" name="ckeck">
    <?php if checkbox1 is ckecked { ?>
    <select name="list" size="1">
        <option value="0">0</option>
        <option value="1">1</option>
    </select>
    <?php } else { ?>
    <select name="list2" size="1">
        <option value="12">12</option>
        <option value="25">25</option>
    </select>
    <?php } ?>
</body>

我希望代码可以帮助更多......

3 个答案:

答案 0 :(得分:2)

如果您希望在不使用提交的情况下显示列表(意味着当您单击复选框时显示该列表),则需要使用诸如Javascript之类的语言而不是PHP来使用Client-Side scripting。 PHP只能控制发送到客户端的输出,一旦客户端显示在浏览器中,您需要使用客户端语言进行更改。

我强烈建议您使用库来执行此操作,因为这会处理您需要手动执行的许多操作。如果您使用the very popular and widespread JQuery library,您的代码可能会像

&#13;
&#13;
<html >
  <body>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
  <script>
  $(function() {
	$("#list").hide();
	$("#ckeck").change(function() {  
		  if($(this).is(":checked")) {
			$("#list").show();
			$("#list2").hide();
		  }
		  else
		  {
			$("#list").hide();
			$("#list2").show();
		  }
	  });
  });
  </script>
  <input type="checkbox" name="ckeck" id="ckeck">
  <select name="list" id="list" size="1">
	<option value="0">0</option>  
	<option value="1">1</option>
  </select>   
  <select name="list2" id="list2" size="1">
	<option value="12">12</option>  
	<option value="25">25</option>
  </select>   
</body>
</html>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

尝试使用.toogle()之类的:

$('#checkbox1').change(function() {
  $("select[name='list']").toggle(this.checked);
  $("select[name='list2']").toggle(!this.checked);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" name="check" id="checkbox1">

<select name="list" size="1" style="display:none">
  <option value="0">0</option>
  <option value="1">1</option>
</select>
<select name="list2" size="1">
  <option value="12">12</option>
  <option value="25">25</option>
</select>

在此处查看此行动:http://jsfiddle.net/mk02qmjh/1/

答案 2 :(得分:1)

PHP无法访问DOM;你需要JavaScript才能做到这一点。如果您必须使用PHP来对复选框做出反应,那么您将需要考虑使用AJAX。基本上你会使用JavaScript(理想情况下是jQuery)来对立即复选框事件做出反应,该事件将使用AJAX与PHP脚本进行通信。您的PHP脚本将返回某种数据。数据可以是包含列表数据的JSON(我推荐这个),可以是要执行的原始JavaScript代码,也可以只返回一个布尔值来确定列表是否显示。这只是一些想法。

如果这不是安全问题,您可以将所有PHP逻辑移至客户端,并在JavaScript中执行所有。您可能会有更好的用户体验,并且可能会减少服务器压力。

tl; dr :改用JS。否则使用JS来处理复选框事件,针对PHP脚本的AJAX,PHP生成数据,JS解释结果。