2013-03-18 82 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

相關問題