0

我找到了一种在选中复选框时显示/取消隐藏 div 的方法,但在默认情况下选中复选框时却没有。

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

那是检查框的代码,现在我需要一些东西:-检查是否选中了复选框->显示其隐藏的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 } ?>
4

1 回答 1

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,成功)

于 2013-03-18T12:53:47.013 回答