Javascript Ajax联系人表单jquery和php单选按钮验证并选择下拉列表

Javascript Ajax联系人表单jquery和php单选按钮验证并选择下拉列表,javascript,php,jquery,forms,validation,Javascript,Php,Jquery,Forms,Validation,我面临以下问题: 1。在提交表单之前,让我的表单验证是否选择了单选按钮 2.当用户点击提交时重置表单(无需重置按钮),以便用户无需刷新页面即可提交另一表单。 我正在尽我最大的努力为我面临的问题找到一个解决方案,有很多教程和其他形式我可以尝试,但我想知道如何使用这种特殊的方法,因为这种形式在我的许多项目中都非常有效 过去对我很有用的原始表单只有姓名、电子邮件、电话和查询。但这一次我需要添加更多的问题,需要一个下拉选择和几个单选按钮 我尽了最大努力使用在线资源和表单的原始工作来让它工作,但我无法让

我面临以下问题: 1。在提交表单之前,让我的表单验证是否选择了单选按钮
2.当用户点击提交时重置表单(无需重置按钮),以便用户无需刷新页面即可提交另一表单。

我正在尽我最大的努力为我面临的问题找到一个解决方案,有很多教程和其他形式我可以尝试,但我想知道如何使用这种特殊的方法,因为这种形式在我的许多项目中都非常有效

过去对我很有用的原始表单只有姓名、电子邮件、电话和查询。但这一次我需要添加更多的问题,需要一个下拉选择和几个单选按钮

我尽了最大努力使用在线资源和表单的原始工作来让它工作,但我无法让它得到验证

如果所有字段都已填写,则表单可以提交。 表单首先检查文本字段和下拉列表是否被选中,然后检查php服务器端的错误,如长度、数字等,单选按钮除外

我为单选按钮想出的最佳解决方案是检查字符串长度是否小于2个字母。但这不是正确的方法

无论哪种方式,如果一个人想多次提交查询,除非刷新,否则他们将无法使用该表单

请帮忙

我尝试使用if(!isset…)它不起作用。 如果我尝试将新字段添加到//check$\u POST vars已设置,如果缺少任何字段,请退出,表单将中断! 我不能在其他情况下使用堆栈上的大多数建议,我希望保持这个简单,不必混合使用两种不同形式的方法。 我的编码知识仍然是基本的,所以我不知道如何解决这个问题

jquery

            <script type="text/javascript">
            $(document).ready(function() {
                $("#submit_btn").click(function() { 
                    //collect input field values
                var user_location = $('select[name=location]').val();
                var user_chain    = $('input:radio[name=chain]:checked').val();
                var user_number   = $('input:radio[name=number]:checked').val();
                var user_first    = $('input:radio[name=first]:checked').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_location=="Select Country") {    
                        $('select[name=location]').css('border-color','red'); 
                        proceed = false;
                    }


                    //everything looks good! proceed...
                    if(proceed) 
                    {
                        //data to be sent to server
                        post_data = {'userName':user_name, 'userEmail':user_email, 'userPhone':user_phone, 'userLocation':user_location, 'userChain':user_chain, 'userNumber':user_number, 'userFirst':user_first, 'userMessage':user_message};

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

                            //load success massage in #result div element, with slide effect.       
                            $("#result").hide().html('<div class="success">'+data+'</div>').slideDown();

                            //reset values in all input fields
                            $('#contact_form input').val(''); 
                            $('#contact_form textarea').val('');
                    $('#contact_form select').val(''); 
                            $('#contact_form input[type:radio]').val('');

                        }).fail(function(err) {  //load any error data
                            $("#result").hide().html('<div class="error">'+err.statusText+'</div>').slideDown();
                        }); 
                    }

                });

                //reset previously set border colors and hide all message on .keyup()
                $("#contact_form input, #contact_form textarea, #contact_form select").keyup(function() { 
                    $("#contact_form input, #contact_form textarea, #contact_form select").css('border-color',''); 
                    $("#result").slideUp();
                });

            });
            </script>

$(文档).ready(函数(){
$(“#提交”_btn”)。单击(函数(){
//收集输入字段值
var user_location=$('select[name=location]')。val();
var user_chain=$('input:radio[name=chain]:checked').val();
var user_number=$('input:radio[name=number]:选中').val();
var user_first=$('input:radio[name=first]:checked').val();
var user_message=$('textarea[name=message]')。val();
//客户端的简单验证
//如果字段为空,我们只需使用.css()将边框颜色更改为红色
var=true;
如果(用户位置==“选择国家”){
$('select[name=location]').css('border-color','red');
继续=错误;
}
//一切看起来都很好!继续。。。
如果(继续)
{
//要发送到服务器的数据
post_数据={'userName':user_name,'userEmail':user_email,'userPhone':user_phone,'userLocation':user_location,'userChain':user_chain,'userNumber':user_number,'userFirst':user_first,'userMessage':user_message};
//Ajax将数据发布到服务器
$.post('contact_me.php',post_数据,函数(数据){
//在#result div元素中加载成功按摩,具有滑动效果。
$(“#结果”).hide().html(“”+data+“”).slideDown();
//重置所有输入字段中的值
$('#联系形式输入').val('');
$(“#联系形式文本区域”).val(“”);
$('#联系形式选择').val('');
$('#联系人_表单输入[类型:无线电]).val('');
}).fail(函数(err){//加载任何错误数据
$(“#结果”).hide().html(“”+err.statusText+“”).slideDown();
}); 
}
});
//重置以前设置的边框颜色并隐藏.keyup()上的所有消息
$(“#联系人表单输入,#联系人表单文本区域,#联系人表单选择”).keyup(函数(){
$(“#联系人表单输入,#联系人表单文本区域,#联系人表单选择”).css('border-color',”;
$(“#结果”).slideUp();
});
});
PHP服务器端

            <?php
            if($_POST)
            {
                //check if its an ajax request, exit if not
                if(!isset($_SERVER['HTTP_X_REQUESTED_WITH']) AND strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') {
                    die();
                } 

                $to_Email       = "xyz@gmail.com"; //Replace with recipient email address
                $subject        = 'Enquiry for Contract Packaging'; //Subject line for emails

                //check $_POST vars are set, exit if any missing
                if(!isset($_POST["userName"]) || !isset($_POST["userEmail"]) || !isset($_POST["userPhone"]) || !isset($_POST["userMessage"]))
                {
                    die();
                }

                //Sanitize input data using PHP filter_var().
                $user_Location    = filter_var($_POST["userLocation"], FILTER_SANITIZE_STRING);
                $user_Chain       = filter_var($_POST["userChain"], FILTER_SANITIZE_STRING);
                $user_Number      = filter_var($_POST["userNumber"], FILTER_SANITIZE_STRING);
                $user_First       = filter_var($_POST["userFirst"], FILTER_SANITIZE_STRING);
                $user_bodymessage ="NAME: ".$user_Name."\n\n";
                $user_bodymessage.="EMAIL: ".$user_Email."\n\n";
                $user_bodymessage.="PHONE: ".$user_Phone."\n\n";
                $user_bodymessage.="LOCATION: ".$user_Location."\n\n";
                $user_bodymessage.="CHAIN: ".$user_Chain."\n\n";
                $user_bodymessage.="QUANTITY: ".$user_Number."\n\n";
                $user_bodymessage.="FIRST TIME: ".$user_First."\n\n";
                $user_bodymessage.="ENQUIRY: ".$user_Message."\n\n";


                //additional php validation
                if(strlen($user_Name)<3) // If length is less than 4 it will throw an HTTP error.
                {
                    header('HTTP/1.1 500 Name is too short or empty!');
                    exit();
                }
                if(!filter_var($user_Email, FILTER_VALIDATE_EMAIL)) //email validation
                {
                    header('HTTP/1.1 500 Please enter a valid email!');
                    exit();
                }
                if(!is_numeric($user_Phone)) //check entered data is numbers
                {
                    header('HTTP/1.1 500 Only numbers allowed in phone field');
                    exit();
                }
                if(strlen($user_Chain)<2) // If length is less than 4 it will throw an HTTP error.
                {
                    header('HTTP/1.1 500 Have you missed a few questions?');
                    exit();
                }
                if(strlen($user_Message)<5) //check emtpy message
                {
                    header('HTTP/1.1 500 Too short message! Please enter something.');
                    exit();
                }

天哪,你真的需要学会做决定。没有人想读几百行的代码,而这些代码大部分都很无聊;而是由你自己制作一个更小的版本,它仍然会显示错误或问题。@Antares42你是对的。对此我很抱歉,除了之前发生过的事情,我给出了最少的信息,然后被要求显示代码。这就是为什么我试图解释我的问题是什么,有什么建议吗?对于初学者,为了测试客户端是否选择了任何单选按钮,您可以在javascript中测试
user\u chain===undefined
(注意三个“=”)。这应该是可行的,因为如果没有选择/检查任何内容,那么jQuery将返回一个空对象,
.val()
,其中的
未定义
。在我看来,您在服务器端对单选按钮所做的一切都很好。检查字符串内容是否为2或更多。由于Ajax请求始终包含字段(因为您发送的不是HTML表单而是自定义对象),这是一种合理的方法。因此,您的意思是如果(user_chain===undefined){procedue=false;}但是在这种结构中,我将如何向用户指示表单由于单选按钮问题而没有继续?其他错误提示只在PHP端出现。我试着给收音机的文本加上颜色,就像其他有红色轮廓的文本一样,但如果有人选择了一个,则不会重置