2013-02-07 13 views
7

Sto cercando di ottenere una casella di controllo selezionata per impostazione predefinita, ma tutto ciò che ho provato non sembra funzionare. Non so se ha a che fare con il PHP che è nel codice.Controllo predefinito una casella di controllo html

function show_subscription_checkbox ($id='0') { 
    global $sg_subscribe; 
    sg_subscribe_start(); 

    if ($sg_subscribe->checkbox_shown) return $id; 
    if (!$email = $sg_subscribe->current_viewer_subscription_status()) : 
     $checked_status = (!empty($_COOKIE['subscribe_checkbox_'.COOKIEHASH]) && 'checked' == $_COOKIE['subscribe_checkbox_'.COOKIEHASH]) ? true : false; 
    ?> 
<p <?php if ($sg_subscribe->clear_both) echo 'style="clear: both;" '; ?>class="subscribe-to-comments"> 
     <input type="checkbox" name="subscribe" id="subscribe" value="subscribe" style="width: auto;" <?php if ($checked_status) echo 'checked="checked" '; ?>/> 

     <label for="subscribe"><?php echo $sg_subscribe->not_subscribed_text; ?></label> 
     </p> 

Questo è un plugin wordpress che consente di iscriversi ai commenti del blog.

ho cercato

echo 'checked=\"checked\" '; 
echo 'checked="checked" ' ; 
echo 'checked> '; 

il plugin autore afferma che hai utilizzato per essere in grado di controllare la casella di controllo, ma non più di default.

risposta

0

Il problema non è nel codice HTML generato; echo 'checked="checked" ', come nella domanda, funziona bene, e lo sarebbe anche il più semplice echo 'checked'.

Il problema è con la condizione $checked_status. Stai testando una variabile che non è definita, per quanto riguarda il codice pubblicato.

+0

Immagino che dovrei pubblicare il codice che è superiore a quello che ho postato inizialmente. Ho aggiornato il mio post con più codice. – myladeybugg

+0

Ora è stato aggiunto il codice che verifica se un cookie viene impostato.Non vi è alcuna indicazione su dove potrebbe essere effettivamente impostato. –

+0

Hmm. Questo mi sta un po 'sopra la testa. Per quanto posso dire che è l'unico codice associato alla casella di controllo. C'è un modo per condividere l'intero file? Oltre a copiare e incollare tutto il codice? Potrei aver lasciato qualcosa. – myladeybugg

4

In HTML, se si desidera che la casella di controllo sia selezionata per impostazione predefinita, vedere quanto segue;

<input type="checkbox" name="name1" value="uc"> This checkbox is unchecked <br> 
<input type="checkbox" name="name2" value="c" checked> This checkbox is checked<br> 

Quindi, si potrebbe pensare di cambiare

<?php if ($checked_status) echo 'checked="checked" '; ?> 

a

<?php if ($checked_status) echo 'checked'; ?> 
+0

Grazie per l'aiuto, ma non ha funzionato neanche. – myladeybugg

+0

Sei sicuro che il tuo '$ checked_status = (! Empty ($ _ COOKIE ['subscribe_checkbox _'. COOKIEHASH]) && 'checked' == $ _COOKIE ['subscribe_checkbox _'. COOKIEHASH])? true: false; la riga viene eseguita prima che l'html sia analizzato? – Alpay

+0

è compatibile con w3c? non sicuro –

26

Dal momento che questo sta rivelando in Google per "default controllato checkbox", ho pensato rispondo. Alpay aveva ragione: Il modo corretto per garantire che una casella è selezionata di default è in questo modo (seguito da un esempio di uno che non è selezionata):

<input type="checkbox" name="vehicle" value="Car" checked> I have a car  
<input type="checkbox" name="vehicle" value="Bike"> I have a bike 

risposta è stata trovata su w3schools. L'autore della domanda originale stava avendo problemi con il suo codice PHP, che non è affatto correlato al titolo della domanda.

0

Ho avuto lo stesso problema. Ho capito che stavo cercando di mettere la casella di controllo in un tavolo ma ho lasciato fuori il e.

non ha controllato:

if(!$stump){echo '<input type="checkbox" name="stump" value="stump" checked="checked"><b> Stump Job!</b>';} 

controllato:

if(!$stump){echo '<td><input type="checkbox" name="stump" value="stump" checked="checked"><b> Stump Job!</b></td>';} 
0

In PHP regolare si può usare questo per "salvare" lo stato controllato dopo il suo stato presentato.

<form name="checkbox" method="post" action="#" > 
<input type="checkbox" name="checkbox1" value="Bike" <?php if ($_POST['checkbox1']=="Bike") echo "checked";?>>I have a bike 
<input type="checkbox" name="checkbox2" value="Car" <?php if ($_POST['checkbox2']=="Car") echo "checked";?>>I have a car 
<input type="submit" name="submit" value="Display this Data" /> 

se si desidera utilizzare questi dati per qualcos'altro dopo l'invio, basta aggiungere:

<?php 
    if(isset($_POST['checkbox1']) OR isset($_POST['checkbox2'])) 
    { 
    echo "for 1 : ".$_POST['checkbox1']."for 2: ".$_POST['checkbox2']; 
    } 
?> 

se si desidera cancellare la forma (in pratica cancellare tutti i dati post) è possibile aggiungere:

Problemi correlati