【问题标题】:PHP form checkbox always returning valuePHP表单复选框总是返回值
【发布时间】:2012-12-26 09:15:59
【问题描述】:

即使未选中复选框,它仍会返回值。我通过 Ajax 请求传递表单并打印返回的值,但检查或未检查的结果相同。 Isset 也无法正常工作。

<input type="checkbox" value="Agree" id="siteAgreement">

if(!isset($siteAgreement) || !$siteAgreement || $siteAgreement != "Agree"){
//////Unchecked
}

【问题讨论】:

  • 我通过 javascript 发布数据:"siteAgreement = $("siteAgreement").value;"所以我认为问题在于它总是会从复选框中获取值。有没有办法改变 oncheck 的值?

标签: php checkbox


【解决方案1】:

改变

siteAgreement = $("#siteAgreement").value;

到这样的事情:

siteAgreement = $("#siteAgreement").is(':checked') ? $("#siteAgreement").val() : null;

但您还应该添加名称属性,以便关闭 javascript 的浏览器也可以使用您的网站。

您还可以使用一些代码自动从表单生成请求(例如jquery.form),这样您就不必在更改表单时更新javascript。

此处示例:http://jsfiddle.net/RhasK/

【讨论】:

  • 虽然,现在检查它时不会执行Javascript
  • 根本不执行?你有当前版本的 jQuery 吗?
【解决方案2】:

这里试试这个:

 if(!isset($_POST['siteAgreement']) || !$_POST['siteAgreement'] || $_POST['siteAgreement'] != "Agree"){
 //////Unchecked
 }

除非您之前提取了变量,否则不会设置 $siteAgreement。您可以使用$_POST['nameofelement'] 访问数据。

【讨论】:

    【解决方案3】:
    if($_POST["siteAgreement"] !== "Agree") {
    //not checked
    }
    

    可以正常使用

    【讨论】:

    • 但问题是当我提交时即使未选中它仍然返回已选中
    【解决方案4】:

    您应该只需要检查它是否已设置。

    if(!isset($_POST['siteAgreement'])){
    //then it is unchecked
    }
    

    另外,你没有给你的输入命名。你需要把...

    <input type="checkbox" name="siteAgreement" value="Agree" id="siteAgreement">
    

    您需要一个名称才能在 PHP 中访问它。

    【讨论】:

    • 名字没有帮助。我通过 Javascript/Ajax 提取数据并通过 id 提取元素值
    • 从 PHP 获取表单值的唯一方法是设置输入的 name 属性。您是否也尝试过我在上面放置的 php 代码?您确定输入标签在您提交的表单内吗?这是我使用复选框的方式,它适用于我的网站。另外,请注意,在您的输入中有 value='Agree' 的地方不会被使用。如果你想检查你写的输入框...checked="yes"
    猜你喜欢
    • 2018-07-05
    • 2013-10-29
    • 2016-05-03
    • 1970-01-01
    • 2021-08-24
    • 2013-03-27
    • 2019-03-13
    相关资源
    最近更新 更多