2013-03-18 77 views
0

我已经找到了一种方法来显示/取消选中复选框时的div,但不是当默认选中复选框时。当复选框=默认选中时显示输入

<?php 
    $checked=product_exists($row[ 'serial']) ? ' checked="checked"': ''; 
    echo '<input type="checkbox" '. $checked . '> '. $row[ 'name'] .'<br />'; 
?> 

这是一个检查框的代码,现在我需要的东西: -check如果一个复选框被选中 - >显示其隐藏的div

我希望有人能帮助我,谢谢。

额外的代码:

<?php $result=mysql_query("select * from products"); while($row=mysql_fetch_array($result)){ 
?> 
<div class="column"> 
    <?php $checked=product_exists($row[ 'serial']) ? ' checked="checked"': 
    ''; $serial=$row[ 'serial']; echo '<input type="checkbox" '. $checked . 
    '> '. $row[ 'name'] . ''. $serial . '<br />'; $result2=mysql_query(
    "select * from productsmenus where serial = $serial"); while($row=mysql_fetch_array($result2)){ echo '<div style="'.($checked==='' 
    ? 'display: none;' : ''). '"></div>';}?> 
</div> 
<?php } ?> 
+2

只调用隐藏/显示页面的onload事件中的div的相同函数。我假设这个函数检查复选框的状态,并适当地隐藏/显示div。 – GarethL 2013-03-18 12:47:06

+0

或者你可以添加一个类到隐藏的div取决于'$ checked'的值。即'if(strlen($ checked)){echo“show”} else {echo“hide”}' – AlexP 2013-03-18 12:57:27

回答

0

也许这可能是一个临时修复:

echo '<div style="'.str_replace('checked="checked"', 'display: none;', $checked).'">'; 

如果我没有记错的话,这是你的问题,不是吗?如果复选框被选中,则隐藏div。其他的方式是相当容易的,太:

echo '<div style="'.($checked === '' ? 'display: none;' : '').'">'; 

但要敢说真话,我不认为你在这个正确的方式打算。诚然,我不知道你想要做什么,但仍然如此。您的“建筑”您的页面,但您仍然需要检查给定产品是否存在?
也许要研究一种获取所有数据的方法,这样就可以将一系列产品传递给某种模板脚本,正如当今大多数框架中的惯例。

更新:
看你的网站后,你可能会使用JS和AJAX的更好呼吁:

document.body.addEventListener('change', function(e) 
{ 
    var div, checkboxTxt, xhr 
    target = e.target || e.srcElement; 
    if (target.tagName.toLowerCase() !== 'input' || target.type !== 'checkbox') 
    {//value of a non-checkbox changed, ignore event 
     return e; 
    } 
    checkboxTxt = target.parentNode.innerText.replace(/[^a-z ]/gi, '').trim(); 
    if (target.checked === false) 
    {//checkbox was unchecked --> hide div 
     div = document.getElementBy(checkboxTxt); 
     div.parentNode.removeChild(div); 
     return e; 
    } 
    //add div: checkbox was checked 
    xhr = new XMLHttpRequest(); 
    xhr.open('post', 'your/ajax/url', true); 
    xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');| 
    xhr.onreadystatechange = function() 
    {//things to do with server data 
     if (this.readyState === 4 && this.status === 200) 
     {//call complete 
      div = document.getElementById(checkboxTxt);//assuming it's hidden... you can create a new element here, too if you like 
      div.style.display = 'block'; 
      div.innerHTML = this.responseText;//or, if it's a JSON object, parse and get the things you need to build the html... 
     } 
    }; 
    xhr.send(JSON.stringify({checkbox:checkboxTxt}); 
}, false); 

这段代码是不会削减它,当然,但它应该足以让你走上正轨。快乐编码(veel plezier,en succes)

+0

我想在复选框被选中时显示div。 因此,当复选框被选中时,他们可以填写更多信息。 我看你是来自比利时,所以我想你可以阅读文本,这是网站http://colinch.com/52/contact.php 人们可以选择:partycatering的项目,当从那里选择一个产品它将显示为联系人页面上的复选框。当检查一个人时,它应该显示他们可以填写的其他信息。喜欢喝2个复选框会显示啤酒,咖啡等。 – colin 2013-03-18 12:57:58

+0

@colin:然后使用第二个'echo'片段,如果'$ checked'变量是空的,复选框没有被选中,你可以隐藏div。 – 2013-03-18 12:59:37

+0

我认为这是我的问题的答案,现在我必须找出如何将产品的“产品”放在div – colin 2013-03-18 13:18:33

相关问题