jQuery,验证表单插件,Ajax 表单插件,验证和提交表单
HTML
<form id="reg" method="post" action="yzh.php" title="会员注册">
<ol class="reg_error"></ol>
<p>
<label for="user">帐号:</label>
<input type="text" name="user" class="text" id="user"/>
<span class="star">*</span>
</p>
<p>
<label for="pass">密码:</label>
<input type="text" name="pass" class="text" id="pass"/>
<span class="star">*</span>
</p>
<p>
<label for="email">邮箱:</label>
<input type="text" name="email" class="text" id="email"/>
<span class="star">*</span>
</p>
<p>
<label>性别:</label>
<input type="radio" name="sex" id="male" checked="checked" value="男"><label for="male">男</label></input>
<input type="radio" name="sex" id="female" value="女"><label for="female">女</label></input>
</p>
<p>
<label for="date">生日:</label>
<input type="text" name="date" readonly="readonly" class="text" id="date"/>
</p>
</form>
<div id="loading">数据交互中...</div>
css
/*注册框*/
#reg {
padding: 15px;
display: none;
} #reg p {
margin: 10px 0;
padding:;
} #reg p label {
font-size: 14px;
/*color: #666;*/
} #reg p .star {
color: red;
} #reg .text {
border-radius: 4px;
border: 1px solid #ccc;
background: #fff;
height: 25px;
width: 200px;
text-indent: 5px;
color: #666;
}
#reg .reg_error{
color: #ff171f;
padding:;
margin:0 0 0 20px;
}
#reg .succ{
display:inline-block;
width:20px;
background:url(../img/reg_succ.png) no-repeat;
} /*ui提示信息*/
.ui-tooltip{
color: #ff1c24;
} .su{
width: 50px;
height: 20px;
background-color: #2cff24;
}
#loading {
line-height:30px;
font-size:14px;
font-weight:bold;
text-indent:40px;
color:#666;
padding-left:40px;
}
前台js
closeOnEscape对话框插件属,性阻止点击键盘ESC键关闭dialog
beforeClose对话框插件属性,值是一个函数,关闭对话框执行函数
submitHandler表单验证插件属性,值是一个函数,全部验证成功执行函数,接收一个参数是表单对象
beforeSubmit提交ajax提交插件属性,值是一个函数,提交时执行函数
success提交ajax提交插件属性,值是一个函数,提交成功后执行函数
highlight表单验证插件属性,值是一个函数,当验证不合法时执行函数
unhighlight表单验证插件属性,值是一个函数,当验证合法时执行函数
showErrors表单验证插件属性,值是一个函数,当验证不合法时执行函数,可以获取不合法句柄
$('#loading').dialog({ //数据交互提示框,执行对话框方法
autoOpen : false, //创建对话框关闭
modal : true, //遮罩
closeOnEscape : false, //阻止点击键盘ESC键关闭dialog
resizable : false, //阻止调整对话框大小
draggable : false, //阻止对话框可以移动
width : 230,
height : 50
}).parent().parent().find('.ui-widget-header').hide(); //找到对话框标题隐藏
//注册框
$('#reg_a').on('click',function () { //将注册框,执行对话框方法
$('#reg').dialog({
autoOpen : true,
modal : true,
resizable : false,
width : 320,
height : 360,
buttons : { //注册对话框创建按钮
'提交' : function () {
$(this).submit(); //执行提交方法
}
},
closeText : '关闭对话框',
beforeClose:function (e,ui) { //将要关闭,执行回调函数
$('#reg').resetForm(); //Ajax 表单插件方法,重置表单
$('#reg span.star').html('*').removeClass('succ'); //改变提示信息
$('#reg ol').html(''); //将提示信息去掉
$('#reg input').css('border', '1px solid #ccc'); //改变出错边框颜色
}
}).buttonset().validate({ //验证表单
submitHandler: function (form) { //全部验证成功准备提交
$(form).ajaxSubmit({ //Ajax 表单插件方法,提交
url: 'add.php', //提交页面
type: 'POST', //提交方式
beforeSubmit: function (formData, jqForm, options) { //提交时
$('#loading').dialog('open'); //打开交互对话框
$('#reg').dialog('widget').find('button').eq(1).button('disable'); //将注册对话框的提交按钮禁止
$('#loading').css('background', 'url(img/743.gif) no-repeat 20px center').html('数据交互中...'); //载入交互对话框图片
},
success: function (responseText, statusText) { //提交后
if (responseText) { //判断提交成功返回值
$('#reg').dialog('widget').find('button').eq(1).button('enable'); //取消阻止注册提交按钮
$('#loading').css('background', 'url(img/chg.png) no-repeat 20px center').html('数据新增成功...'); //载入提交成功图片
setTimeout(function () { //睡眠1秒
$('#loading').dialog('close'); //关闭交互提示对话框
$('#reg').dialog('close'); //关闭注册对话框
$('#reg').resetForm(); //重置表单
$('#reg span.star').html('*').removeClass('succ'); //改变验证提示信息
}, 10000);
}
}
});
},
highlight: function (element, errorClass) { //如果出错,错误框边框改变颜色
$(element).css('border', '1px solid #630');
$(element).parent().find('span').html('*').removeClass('succ'); //改变验证提示信息
},
unhighlight: function (element, errorClass) { //如果正确取消边框改变颜色
$(element).css('border', '1px solid #ccc');
$(element).parent().find('span').html(' ').addClass('succ'); //显示正确图片
},
showErrors: function (errorMap, errorList) { //获取出错句柄
var errors = this.numberOfInvalids();
if (errors > 0) { //判断出错句柄个数来改变对话框的高度
$('#reg').dialog('option', 'height', errors * 20 + 360); //注册对话框自动根据错误数量来改变高度
} else {
$('#reg').dialog('option', 'height', 360); //没有错误还原高度
}
this.defaultShowErrors();
},
errorLabelContainer: 'ol.reg_error', //有错误时,将所有表单错误信息统一放到class为ol.reg_error的元素里
wrapper: 'li', //将每个错误信息放入一个li标签
rules : { //表单验证规则
user : { //验证用户名
required:true, //不能为空
rangelength:[2,10] //不得小于2位大于10位
},
pass:{ //验证密码
required:true, //不能为空
rangelength:[6,20] //不得小于6位大于20位
},
email:{ //验证邮箱
required:true, //不能为空
email:true //必须是邮箱格式
}
},
messages : { //错误提示
user : {
required:'用户名不能为空!',
rangelength:jQuery.format('用户名不得小于{0}位,大于{1}位')
},
pass:{
required:'密码不能为空',
rangelength:jQuery.format('密码不得小于{0}位,大于{1}位')
},
email:{
required:'邮箱不能为空',
email:'请输入正确的邮箱格式'
}
}
}); //邮箱执行自动补全
$('#email').autocomplete({
autoFocus: true,
delay: 0,
source: function (request, response) {
var hosts = ['qq.com', '163.com', '263.com', 'gmail.com', 'hotmail.com'], //起始
term = request.term, //获取输入值
ix = term.indexOf('@'), //@
name = term, //用户名
host = '', //域名
result = []; //结果
//结果第一条是自己输入
result.push(term);
if (ix > -1) { //如果有@的时候
name = term.slice(0, ix); //得到用户名
host = term.slice(ix + 1); //得到域名
}
if (name) {
//得到找到的域名
var findedHosts = (host ? $.grep(hosts, function (value, index) {
return value.indexOf(host) > -1;
}) : hosts),
//最终列表的邮箱
findedResults = $.map(findedHosts, function (value, index) {
return name + '@' + value;
});
//增加一个自我输入
result = result.concat(findedResults);
}
response(result);
}
}); //将生日执行日历ui
$('#date').datepicker({
showOtherMonths:true,
changeYear:true,
changeMonth:true,
yearSuffix:''
});
});
提交PHP文件
<?php
header('Content-Type:text/html; charset=utf-8'); define('DB_HOST', 'localhost');
define('DB_USER', 'root');
define('DB_PWD', '279819');
define('DB_NAME', 'zhiwen'); $conn = @mysql_connect(DB_HOST, DB_USER, DB_PWD) or die('数据库链接失败:'.mysql_error()); @mysql_select_db(DB_NAME) or die('数据库错误:'.mysql_error()); @mysql_query('SET NAMES UTF8') or die('字符集错误:'.mysql_error());
sleep(3);
require 'config.php'; $query = "INSERT INTO user (user, pass, email, sex, birthday, date)
VALUES ('{$_POST['user']}', sha1('{$_POST['pass']}'), '{$_POST['email']}', '{$_POST['sex']}', '{$_POST['birthday']}', NOW())"; mysql_query($query) or die('新增失败!'.mysql_error()); echo mysql_affected_rows(); mysql_close();
?>