2013-02-07 152 views
7

我想获得一个默认选中的复选框,但是我尝试过的所有东西似乎都不起作用。我不知道它是否与代码中的PHP有关。默认勾选一个复选框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> 

这是一个wordpress插件,允许您订阅博客评论。

我已经试过

你以前可以为默认选中复选框,但现在不是了
echo 'checked=\"checked\" '; 
echo 'checked="checked" ' ; 
echo 'checked> '; 

插件作者的状态。

回答

0

问题不在于正在生成的HTML标记; echo 'checked="checked" ',如问题所述,运作良好,简单的echo 'checked'也是如此。

问题出在条件$checked_status。只要考虑了发布的代码,您正在测试一个未定义的变量。

+0

我想我应该公布最初发布的代码。我用更多的代码更新了我的帖子。 – myladeybugg

+0

您现在已经添加了用于测试被设置的cookie的代码。没有迹象表明它可能实际设置的位置。 –

+0

嗯。这让我头脑发热。据我所知,这是与复选框关联的唯一代码。有没有办法分享整个文件?除了复制和粘贴所有的代码?我可能已经遗漏了一些东西。 – myladeybugg

4

在HTML中,如果您希望默认选中复选框,请参阅以下内容;

<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> 

所以,你可能会考虑更改

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

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

感谢您的帮助,但也没有奏效。 – myladeybugg

+0

你确定你的'$ checked_status =(!empty($ _ COOKIE ['subscribe_checkbox _'。COOKIEHASH])&&'checked'== $ _COOKIE ['subscribe_checkbox _'。COOKIEHASH])? true:false;'行在html解析之前执行? – Alpay

+0

是否符合w3c?不知道 –

26

由于这是没有显示在谷歌为 “默认选中复选框”,我想我会回答。阿尔帕伊是正确的:正确的方法,以确保被默认选中复选框是像这样(之后是一个不检查一个示例):

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

了答案上w3schools发现。原始问题的作者遇到了与他的PHP代码有关的问题,这与代码题目没有任何关系。

0

我有同样的问题。我发现我试图将复选框放入表格中,但忽略了和。

没有检查:

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

检查:

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

在常规PHP,你可以用它来 “拯救” 的选中状态的提交后。

<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" /> 

,如果你想用这个数据后,别的东西提交,只需添加:

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

如果要清除表单(基本上清除所有的POST数据),您可以添加:

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> 
<input type="submit" name="Clear all form data" value= "Clear this form"> 
</form>