Javascript 使用AJAX返回进行表单验证

Javascript 使用AJAX返回进行表单验证,javascript,html,ajax,Javascript,Html,Ajax,我有一个联系人表单,当点击提交时,我希望被验证 如果所有字段都返回valid,那么我希望AJAX返回一条处理消息,然后,如果成功,将显示一条带有输入名称的消息 我的表格内容是: <form onsubmit="return validateForm"> <input id="fname" class="textbox" name="fname" placeholder="First Nname" type="text" required="required" /><

我有一个联系人表单,当点击提交时,我希望被验证

如果所有字段都返回valid,那么我希望AJAX返回一条处理消息,然后,如果成功,将显示一条带有输入名称的消息

我的表格内容是:

<form onsubmit="return validateForm">
<input id="fname" class="textbox" name="fname" placeholder="First Nname" type="text" required="required" /><p>
<input id="sname" class="textbox" name="sname" placeholder="Surname" type="text" required="required" /><p>
<input id="email" class="textbox" name="email" placeholder="Email Address" type="email" required="required" /><p>
<input id="number" class="textbox" name="number" placeholder="Contact Number" type="email" /><p>
<textarea rows="10" id="message" class="textarea" name="message" placeholder="Message" required="required" ></textarea><p>
<input fname="myBtn" class="button" type="submit" value="Submit" onClick="javascript:ajax_post();">
function validateForm()
{
var fname=document.forms["Form"]["fname"].value;
var sname=document.forms["Form"]["sname"].value;
var x=document.forms["Form"]["email"].value;
var telnum=document.forms["Form"]["telnum"].value;
var message=document.forms["Form"]["message"].value;

if(fname==null||fname=="")
    {
    alert("please enter your first name");
    return false;
    }

if(sname==null||sname=="")
    {
    alert("please enter your surname");
    return false;
    }

var atpos=x.indexOf("@");
var dotpos=x.lastIndexOf(".");
if(atpos<1||dotpos<atpos+2||dotpos+2>x.lenght)
    {
    alert("Not a valid email address.");
    return false;
    }

if(message==null||message=="")
    {
    alert("please enter a message");
    return false;
    }
}
返回的PHP为:

function ajax_post(){
var hr = new XMLHttpRequest();
var url = "/additional/formfeedback.php";
var fname = document.getElementById("fname").value;
var vars = "fname="+fname;
hr.open("POST", url, true);
// Set content type header information for sending url encoded variables in the request
hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
// Access the onreadystatechange event for the XMLHttpRequest object
hr.onreadystatechange = function() {
if(hr.readyState == 4 && hr.status == 200) {
var return_data = hr.responseText;
document.getElementById("status").innerHTML = return_data;
}
}
hr.send(vars);
document.getElementById("status").innerHTML = "Processing...";
}
<?php 
echo 'Thank you '. $_POST['fname'] . ', we have recieved your message and will be back in touch shortly';
?>

单击Submit按钮时,返回PHP内容,然后开始验证-显然太晚了


如何正确地验证,然后执行AJAX脚本?我不想使用任何额外的库,比如jQuery。提前谢谢。

一点。。。您不需要在onclick中使用“javascript:”。它已经在期待javascript了


另外,如果要使用Ajax提交数据,请将按钮更改为type=“button”(不提交)

一点。。。您不需要在onclick中使用“javascript:”。它已经在期待javascript了


另外,如果要使用Ajax提交数据,请将按钮更改为type=“button”(not submit)

您应该将验证设置为提交按钮,然后在验证脚本的底部调用Ajax脚本。

您应该将验证设置为提交按钮,然后在验证脚本的底部,调用ajax脚本。

validateForm
方法末尾调用
ajax\u post

validateForm
方法末尾调用
ajax\u post


<script type="text/javascript">

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

                var fname  = $("#fname").val();
                var lname  = $("#lname").val();
                var email   = $("#email").val();
                var password = $("#Password").val();
                var cpassword = $("#cpassword").val();
                var gender = $("input[name=gender]:checked").val();
                var dob    = $("#dob").val();
                var image  = $("#image").val();
                var status  = $("#status").val();
                var submit  = $("#submit").val();

             var dataString='fname='+fname+'&lname='+lname+'&email='+email+ '&password='+password+ 
                '&cpassword='+cpassword+ '&gender='+gender+ '&dob='+dob+ '&image='+image+ '&status='+status+
                '&submit'+submit;

                if(fname=="" || lname=="" || email==""){
                    alert("please fill the fields");
                 }else if(fname.length < 5 || fname.length > 20){
                    alert("user name must be between 5 to 20 characters");
                 }else if(password.length < 5 || password.length > 8){
                    alert("password must be between 5 to 8 characters"); 
                 }else if(!gender){
                    alert("please select your gender");
                 }else if(!dob){
                    alert("please select  your birth day");
                 }else{
                    $.ajax({
                        type:"POST",
                        url:"create-user.php",
                        data:dataString,
                        cache:false,
                        success:function(result){
                            alert(result);
                        }
                    });//ajax closed
                 }

                 return false;
            });
        });
    </script>
                <div id="content" class="col-lg-10 col-sm-10">
                        <!-- content starts -->
                <div>
                <ul class="breadcrumb">
                    <li>
                        <a href="#">Home</a>
                    </li>
                        <li>
                            <a href="#">Forms</a>
                        </li>
                    </ul>
                </div>
        <div class="box-content">
                <div id="userRegis">
                    <div class="form-group">
                            <label for="exampleInputEmail1">First Name</label>
                            <input class="form-control" id="fname" placeholder="Enter First Name" type="text" name="fname">
                        </div>
                            <div class="form-group">
                                <label for="exampleInputEmail1">Last Name</label>
                                <input class="form-control" id="lname" placeholder="Enter Last Name" type="text">
                            </div>
                            <div class="form-group">
                                <label for="exampleInputEmail1">Email</label>
                                <input class="form-control" id="email" placeholder="Enter Email" type="text">
                            </div>

                            <div class="form-group">
                                <label for="exampleInputEmail1">Password</label>
                                <input class="form-control" id="Password" placeholder="Enter Password" type="password">
                            </div>

            <div class="form-group">
                    <label for="exampleInputEmail1">confirm Password</label>
                    <input class="form-control" id="cPassword" placeholder="Enter confirm Password" type="password" name="cpassword">
                </div>  

            <div class="form-group">        
                    <label for="exampleInputEmail1">Gender</label>
             <div class="radio">
                    <label>
                         <input type="radio" name="gender" id="gender" value="MALE">Male
                    </label>
                         <label>
                            <input type="radio" name="gender" id="gender" value="FEMALE">Female
                        </label>
                    </div>
                </div>
                <div class="form-group">
                    <label for="exampleInputEmail1">date of birth</label>
                    <input class="form-control" id="dob" placeholder="Enter Password" type="date" name="dob">
                </div>   

                <div class="form-group">
                        <label for="exampleInputEmail1">image</label>
                        <input class="form-control" id="image" placeholder="Enter Password" type="file" name="image">
                    </div>              

                    <div class="form-group">
                        <div class="control-group">
                    <label class="control-label" for="selectError">Status</label>
                    <div class="controls">
                        <select id="status" data-rel="chosen"  name="status">
                            <option value="0">SELECT</option>
                            <option value="1">ACTIVE</option>
                            <option value="2">PENDING</option>

                        </select>
                    </div>
                </div>
             <br>
            <input type="submit" name="submit" id="submit" value="create user" class="btn btn-default">
        </div>
    </div>
</div>  
</div> 
$(文档).ready(函数(){ $(“#提交”)。单击(函数(){ var fname=$(“#fname”).val(); var lname=$(“#lname”).val(); var email=$(“#email”).val(); var password=$(“#password”).val(); var cpassword=$(“#cpassword”).val(); var gender=$(“输入[name=gender]:选中”).val(); var dob=$(“#dob”).val(); var image=$(“#image”).val(); var status=$(“#status”).val(); var submit=$(“#submit”).val(); var dataString='fname='+fname+'&lname='+lname+'&email='+email+'&password='+password+ “&cpassword=”+cpassword+”&gender=”+gender+”&dob=“+dob+”&image=“+image+”&status=”+status+ “&submit”+提交; 如果(fname==“”| | lname==“”| | email==“”){ 警告(“请填写字段”); }否则如果(fname.length<5 | | fname.length>20){ 警报(“用户名必须在5到20个字符之间”); }否则如果(password.length<5 | | password.length>8){ 警报(“密码必须在5到8个字符之间”); }否则如果(!性别){ 提醒(“请选择您的性别”); }否则如果(!dob){ 提醒(“请选择您的出生日期”); }否则{ $.ajax({ 类型:“POST”, url:“创建user.php”, 数据:dataString, cache:false, 成功:功能(结果){ 警报(结果); } });//ajax已关闭 } 返回false; }); });
名字 姓 电子邮件 密码 确认密码 性别 男性 女性 出生日期 形象 地位 挑选 活跃的 悬而未决的

$(文档).ready(函数(){
$(“#提交”)。单击(函数(){
var fname=$(“#fname”).val();
var lname=$(“#lname”).val();
var email=$(“#email”).val();
var password=$(“#password”).val();
var cpassword=$(“#cpassword”).val();
var gender=$(“输入[name=gender]:选中”).val();
var dob=$(“#dob”).val();
var image=$(“#image”).val();
var status=$(“#status”).val();
var submit=$(“#submit”).val();
var dataString='fname='+fname+'&lname='+lname+'&email='+email+'&password='+password+
“&cpassword=”+cpassword+”&gender=”+gender+”&dob=“+dob+”&image=“+image+”&status=”+status+
“&submit”+提交;
如果(fname==“”| | lname==“”| | email==“”){