Javascript 使用AJAX返回进行表单验证
我有一个联系人表单,当点击提交时,我希望被验证 如果所有字段都返回valid,那么我希望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" /><
<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==“”){