【问题标题】:Form Value with jQuery and POST - Single Checkbox带有 jQ​​uery 和 POST 的表单值 - 单个复选框
【发布时间】:2014-10-30 08:06:56
【问题描述】:

这成功返回了一个结果,但结果对我来说没用。在 php 文件中,我有这个简单的代码: var_dump($_POST['rememberMe']);

无论复选框是否被标记,结果都是 string(2) "on"。如何获得根据复选框是否被标记而变化的结果?

谢谢。

Remember Me: <input type="checkbox"
                    id="remember">

<div id="result" style="margin-top:20px;">


<script>

$("#submit").click(function(){
    submitLogin();
});

$("#password").keyup(function (f){
    if (f.keyCode == 13) {
        submitLogin();
    }
});


function submitLogin(){
    $.post("php/test.php", { 
        loginUsername:$('#username').val(), 
        loginPassword:$('#password').val(),
        rememberMe:$('#remember').val()
    }, function(data){
        $("#result").text(data);
    });
}

</script>

【问题讨论】:

    标签: javascript php jquery post checkbox


    【解决方案1】:

    value 属性对于复选框是必需的,默认为on。这适用于复选框是否被选中,值始终相同。你想要的是检查复选框的状态(不是它的值)。

    $('#remember').prop("checked")
    

    顺便说一句,这比.is(:checked) 快​​得多,请参阅http://jsperf.com/prop-vs-ischecked/5 进行比较。

    【讨论】:

    • .is(':checked')
    • .prop() 更快。
    • 我在您编辑添加之前发布。谢谢,我会选择你的答案。 ;)
    【解决方案2】:

    最好序列化通过 post $("form").serialize(); 发送的表单。然后,在目标页面中,只需检查 $_POST['rememberMe'] 是否存在。 (如果未选中复选框,$_POST['rememberMe'] 的 isset 将等于 false)

    【讨论】:

      【解决方案3】:

      这个:

      rememberMe:$('#remember').val()
      

      需要成为:

      rememberMe:$('#remember').is(':checked')
      

      【讨论】:

      • $("#expire")?这适合您的代码吗?
      • @winterblood 对不起,我编辑了代码以供使用,当我复制/粘贴时,我忘记将其设置回来。它是固定的。 ;)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-02-20
      • 1970-01-01
      • 2011-04-15
      • 2020-05-29
      • 1970-01-01
      • 1970-01-01
      • 2012-04-17
      相关资源
      最近更新 更多