本教程是演示如何利用PHP和Jquery无刷新提交一个表单,然后将表单信息以邮件的形式发送给管理员。
演示与下载:
(解压密码为:www.code52.net ) |
Tips: 如果演示出现js错误或无法正常显示,请刷新一遍浏览器。这是由于JS下载不完全造成的。
本实例只利用到JQuery类库本身的函数和功能,不需要第三方插件的支持。另外,所有表单信息都是利用PHPMailer类库邮件的形式发送给管理员。如果你对JQuery的基本语法还不是很熟悉,请搜索本站的教程资源。如果你对PHPMailer用法不熟悉,请查看本站的另一篇文章《使用PHPMailer类库发送电子邮件》 。
第一步,创建一个表单HTML页面
这里,我们只展示主要的表单部分HTML结构代码:
- < div id ="contact_form" >
- < form name ="contact" method ="post" action ="" >
- < fieldset >
- < label for ="name" id ="name_label" > 姓名</ label >
- < input type ="text" name ="name" id ="name" size ="30" value ="" class ="text-input" />
- < label class ="error" for ="name" id ="name_error" > 此项必填</ label >
- < label for ="email" id ="email_label" > 您的Email</ label >
- < input type ="text" name ="email" id ="email" size ="30" value ="" class ="text-input" />
- < label class ="error" for ="email" id ="email_error" > 此项必填</ label >
- < label for ="phone" id ="phone_label" > 您的联系电话</ label >
- < input type ="text" name ="phone" id ="phone" size ="30" value ="" class ="text-input" />
- < label class ="error" for ="phone" id ="phone_error" > 此项必填</ label >
- < br />
- < input type ="submit" name ="submit" class ="button" id ="submit_btn" value ="我要发送" />
- </ fieldset >
- </ form >
- </ div >
几点注意:
- 这里用一个id为contact_form来包含整个包含信息;这是有意义的,稍后在JavaScript与用户交互信息的时候会用到。
- 大家应该注意到了,这里form标签的属性里面既包含了method和action;这个意义其实不大,因为Javascript直接操作DOM,所以没有这两个属性也是可以的;
- 务必要给用户输入的<input>标签加独立的id,这和第二点原理类似。否则,无法看到正常的效果。
外观截图如下(美工来自互联网):
第二步,开始添加JQuery代码
这里假设你已经从JQuery官方网站上下载了JQuery基库 ,然后上传到了你的WEB服务器,并添加到你要使用的网页 中了。
现在另外新建一个JS文件,添加如下代码:
- $(function () {
- $(".button" ).click(function () {
- // 处理表单验证和交给后台处理的逻辑
- });
- });
-
第一行的function()函数与Jquery的document.ready 函数用法和功能相同,都是在DOM准备完毕后自动触发。
-
第二行里面是一个单击触发函数click(),需要注意的是,在HTML一页提交按钮上需要放置一个名为“button”的Class,以模拟实现submi提交表单的功能.
-
从第二点我们可以看出,JQuery可以很好的将结构和逻辑分离。
第三步,编写验证代码
在实际应用中,这一步是必不可少的。在用户漏填,错填某个项目时,及时提示。
- $(function () {
- $('.error' ).hide();
- $(".button" ).click(function () {
- // 验证代码
- $('.error' ).hide();
- var name = $("input#name" ).val();
- if (name == "" ) {
- $("label#name_error" ).show();
- $("input#name" ).focus();
- return false ;
- }
- var email = $("input#email" ).val();
- if (email == "" ) {
- $("label#email_error" ).show();
- $("input#email" ).focus();
- return false ;
- }
- var phone = $("input#phone" ).val();
- if (phone == "" ) {
- $("label#phone_error" ).show();
- $("input#phone" ).focus();
- return false ;
- }
- });
- });
-
第2行,我们添加一个$('.error').hide()是为了在用户未输入任何信息时隐藏三个class="error"提示错误的label标签。而只有当出现错误,即为空时,错误才会出现。(因为有return false的作用,每次仅会出现一个错误)
-
在JQuery里面,获取DOM中某个ID或者Class的值非常简单
- //获取id的值
- var name = $("input#name" ).val();
- //获取class序号为1的值
- var name = $(".name" )[1].val();
-
现假设用户没有输入姓名,处理逻辑应该是:首先显示错误,然后将焦点定位在姓名上。
- if (name == "" ) { //用户名为空
- $("label#name_error" ).show(); //错误提示
- $("input#name" ).focus(); //焦点定位
- return false ; //返回
- }
-
在必填的字段上验证时,都必须return false,否则会出现必填项未填完即提交的情况。
第四步,通过Jquery的Ajax函数提交表单信息。
- var dataString = 'name=' + name + '&email=' + email + '&phone=' + phone;
- //alert (dataString);return false;
- $.ajax({
- type: "POST" ,
- url: "bin/process.php" ,
- data: dataString,
- success: function () {
- $('#contact_form' ).html("<div id='message'></div>" );
- $('#message' ).html("<h2>联系方式已成功提交!</h2>" )
- .append("<p>Script by Code52.net</p>" )
- .hide()
- .fadeIn(1500, function () {
- $('#message' ).append("<img id='checkmark' src='images/check.png' />" );
- });
- }
- });
- return false ;
详细解释:
- var name = $("input#name" ).val();
- var email = $("input#email" ).val();
- var phone = $("input#phone" ).val();
- //将表单项的值组合成一个字符串
- var dataString = 'name=' + name + '&email=' + email + '&phone=' + phone;
- $.ajax({
- type: "POST" ,
- url: "bin/process.php" ,
- data: dataString,
- success: function () {
- $('#contact_form' ).html("<div id='message'></div>" );
- $('#message' ).html("<h2>Contact Form Submitted!</h2>" )
- .append("<p>We will be in touch soon.</p>" )
- .hide()
- .fadeIn(1500, function () {
- $('#message' ).append("<img id='checkmark' src='images/check.png' />" );
- });
- }
- });
- return false ;
第五步,反馈信息给用户的部分
- $('#contact_form' ).html("<div id='message'></div>" );
- $('#message' ).html("<h2>联系方式已成功提交!</h2>" )
- .append("<p>We will be in touch soon.</p>" )
- .hide() //整个层消失
- .fadeIn(1500, function () {//在1500毫秒内逐渐出现
- //最后再动态追加一个成功图标
- $('#message' ).append("<img id='checkmark' src='images/check.png' />" );
- });
后记: 如果要将此实例运用在实际中,可能还需要对一些地方做出修改。比如,增加验证信息规则,在用户提交信息的过程中设置一个Loading的图标等等,本教程仅作抛砖引玉之用了。另外,请注意,后台提交数据给邮箱,我这里就不再解释了。打包下载的实例中有很详细的注释,你需要改动的地方仅仅是用户名和密码。下载压缩包之后,你也许会发现里面有个runonload.js文件,此文件的作用是在加载表单文件时,将焦点聚焦在输入表单上,仅此而已。