Checked checkbox?

时间:2011-10-26 作者:Adam Capriola

我正在努力向我的用户注册页面添加一个复选框,以选择加入我的电子邮件列表,我不确定默认情况下勾选复选框的正确方式。到目前为止,我得到的是:

// Checkbox to join list
add_action( \'register_form\', \'email_opt_in\' );

function email_opt_in() { ?>
    <p>
    <label style="font-size:13px;">
    <input type="checkbox" name="email_opt_in" id="email_opt_in" class="input" value="1" <?php checked( $_POST[\'email_opt_in\'], 1 ); ?> tabindex="99" style="width:12px;padding:0;margin: 0 3px 0 0;font-size: 13px;" /> 
    Join our famous e-mail list
    </label>
    </p>
    <br/><?php
}
我正在使用checked 这很好,但我希望在默认情况下选中该复选框。正在添加checked="checked"input 做正确的事,还是有更好的方法?

提前感谢!

3 个回复
SO网友:onetrickpony

我会在复选框前添加一个同名的隐藏输入字段:

<input type="hidden" name="email_opt_in" value="0" />

由于表单是按顺序处理的,因此如果表单已提交,则会得到“0”,但未选中复选框(而不是什么都没有)。

然后假设如果表单未提交或已提交且复选框已选中,则复选框已选中:

$checked = !isset($_POST[\'email_opt_in\'])
             || (isset($_POST[\'email_opt_in\']) && $_POST[\'email_opt_in\']);
稍后:

... <?php checked($checked); ?>

整个想法是存储复选框的未选中状态,以防输入错误,因此如果用户不想在第一次提交时再次检查,则无需再次检查。

很抱歉,对于这个简单的问题,我给出了冗长而乏味的答案:)

SO网友:Chip Bennett

您需要将选项的实际电流值传递给checked(), 而不是$_POST 价值

您如何注册您的选项,以及如何在表单中引用它们?

SO网友:Tareq

由于您希望在默认情况下选中复选框,因此checked="checked" 在HTML中。

结束

相关推荐