默认情况下复选框=选中时显示输入

时间:2013-03-18 12:39:49

标签: php javascript checkbox default show

我找到了一种方法,可以在选中复选框时显示/取消隐藏div,但默认情况下选中复选框则不会。

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

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

1 个答案:

答案 0 :(得分: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)