Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法取消选中复选框_Javascript_Jquery_Checkbox - Fatal编程技术网

Javascript 无法取消选中复选框

Javascript 无法取消选中复选框,javascript,jquery,checkbox,Javascript,Jquery,Checkbox,我正在尝试在提交表单后取消选中复选框 在html方面,我有以下内容 <form class="form contact-form" id="contact_form"> <input type="checkbox" id="store_pickup" name="pickup" value="pickup" onclick="storeDetails()"> <label for="store_pickup">Store Pickup</labe

我正在尝试在提交表单后取消选中复选框

在html方面,我有以下内容

<form class="form contact-form" id="contact_form">
  <input type="checkbox" id="store_pickup" name="pickup" value="pickup" onclick="storeDetails()">
  <label for="store_pickup">Store Pickup</label>
  ....

商店皮卡
....
然后我有一个表单的现有JS文件,它适用于除复选框之外的所有其他输入类型

$(document).ready(function(){
$("#submit_btn").click(function(){

  //get input field values
    var user_name = $('input[name=name]').val();
    var user_email = $('input[name=email]').val();
    var user_message = $('textarea[name=message]').val();

    //simple validation at client's end
    //we simply change border color to red if empty field using .css()
    var proceed = true;
    if (user_name == "") {
        $('input[name=name]').css('border-color', '#e41919');
        proceed = false;
    }
    if (user_email == "") {
        $('input[name=email]').css('border-color', '#e41919');
        proceed = false;
    }

    if (user_message == "") {
        $('textarea[name=message]').css('border-color', '#e41919');
        proceed = false;
    }

    //everything looks good! proceed...
    if (proceed) {
        //data to be sent to server
        post_data = {
            'userName': user_name,
            'userEmail': user_email,
            'userMessage': user_message
        };

        //Ajax post data to server
        $.post('contact_business.php', post_data, function(response){

            //load json data from server and output message
            if (response.type == 'error') {
                output = '<div class="error">' + response.text + '</div>';
            }
            else {

                output = '<div class="success">' + response.text + '</div>';

                //reset values in all input fields
                $('#contact_form input').val('');
                $('#contact_form textarea').val('');
                // $('#store_pickup').attr('checked', false);
                // $("#store_pickup").prop('checked', false);


            }

            $("#result").hide().html(output).slideDown();
        }, 'json');

    }

    return false;
});

//reset previously set border colors and hide all message on .keyup()
$("#contact_form input, #contact_form textarea").keyup(function(){
    $("#contact_form input, #contact_form textarea").css('border-color', '');
      // $("#store_pickup").attr('checked', false);
      // $("#store_pickup").prop('checked', false);
    $("#result").slideUp();
  });
});
$(文档).ready(函数(){
$(“#提交”_btn”)。单击(函数(){
//获取输入字段值
var user_name=$('input[name=name]')。val();
var user_email=$('input[name=email]')。val();
var user_message=$('textarea[name=message]')。val();
//客户端的简单验证
//如果字段为空,我们只需使用.css()将边框颜色更改为红色
var=true;
如果(用户名==“”){
$('input[name=name]').css('border-color','#e41919');
继续=错误;
}
如果(用户\电子邮件==“”){
$('input[name=email]').css('border-color','#e41919');
继续=错误;
}
如果(用户消息==“”){
$('textarea[name=message]').css('border-color','#e41919');
继续=错误;
}
//一切看起来都很好!继续。。。
如果(继续){
//要发送到服务器的数据
post_数据={
“用户名”:用户名,
“用户电子邮件”:用户电子邮件,
“userMessage”:用户消息
};
//Ajax将数据发布到服务器
$.post('contact_business.php',post_数据,函数(响应){
//从服务器加载json数据并输出消息
如果(response.type==“error”){
输出=“”+response.text+“”;
}
否则{
输出=“”+response.text+“”;
//重置所有输入字段中的值
$('#联系形式输入').val('');
$(“#联系形式文本区域”).val(“”);
//$('store#u pickup').attr('checked',false);
//$(“#商店#皮卡”).prop('checked',false);
}
$(“#结果”).hide().html(输出).slideDown();
}“json”);
}
返回false;
});
//重置以前设置的边框颜色并隐藏.keyup()上的所有消息
$(“#联系人表单输入,#联系人表单文本区域”).keyup(函数(){
$(“#联系人表单输入,#联系人表单文本区域”).css('border-color','');
//$(“#商店#皮卡”).attr('checked',false);
//$(“#商店#皮卡”).prop('checked',false);
$(“#结果”).slideUp();
});
});

我已经尝试了下面两个在代码中注释掉的语句,但是这些都不起作用,有人可以帮助我吗。谢谢大家!

控制复选框是否被选中的是
checked
属性是否存在。设置属性的值无效

所以你需要

$("#store_pickup").removeAttr('checked');

您可以通过以下方式切换type=“checkbox”HTML输入的选中属性

您可以使用检查复选框的checked属性的当前状态

$( elem ).prop('checked', false); 
$( elem ).prop('checked', true); 
$( elem ).prop('checked')
您还可以使用Chrome Inspect工具查看/测试DOM元素的当前属性,方法是选择该元素,然后查看“属性”选项卡。


注意:在我的Chrome版本中,我必须取消选择,然后重新选择DOM元素,以便在使用上述JS修改属性值后看到属性刷新

请提供您的问题的最小可验证示例。您已经为我们提供了完整的JavaScript代码,但只是表单的一部分。要么提供剩下的HTML,要么编写一个只查看复选框的新JavaScript;我混淆了$.attr()和$.prop()。我已经编辑了关于Chrome Inspector的回答。参考1)参考2)