模态窗体已经成为Web开发人员设计界面时经常要使用的传输数据的方式。通过模态窗口,可以提高网站的可用性。正好项目的需要,有个客户想要模态弹出的窗体来提交网站的反馈,经过一番测试实现了,我使用jQueryfancybox插件来创建一个漂亮的模态窗体,提交表单的数据在服务器端实现Ajax调用。你可以在你的邮件里收到用户发送的反馈消息html代码

header部分主要的JS文件如下引入jquery代码和fancybox代码

首先,从官网下载最新的Fancybox,并解压缩。核心的HTML页面代码是非常简单的,这里有一个隐藏的DIV,当用户单击href链接时候,打开一个模态窗口。

Send us feedback from the modal window.

有本事你点我

发送消息给我们

你的邮件

你想要对我们说

立即发送

CSS样式表

设置文本框的颜色,大小,获得焦点下的样式等等,使用:hover和:active来显示状态。

.txt {

display: inline-block;

color: #676767;

width: 420px;

font-family: Arial, Tahoma, sans-serif;

margin-bottom: 10px;

border: 1px dotted #ccc;

padding: 5px 9px;

font-size: 1.2em;

line-height: 1.4em;

}

.txtarea {

display: block;

resize: none;

color: #676767;

font-family: Arial, Tahoma, sans-serif;

margin-bottom: 10px;

width: 500px;

height: 150px;

border: 1px dotted #ccc;

padding: 5px 9px;

font-size: 1.2em;

line-height: 1.4em;

}

.txt:focus,

.txtarea:focus {

border-style: solid;

border-color: #bababa;

color: #444;

}

input.error,

textarea.error {

border-color: #973d3d;

border-style: solid;

background: #f0bebe;

color: #a35959;

}

input.error:focus,

textarea.error:focus {

border-color: #973d3d;

color: #a35959;

}我定义了一个错误的css类,结合jquery用来检测用户输入的数据是否正确,输入错误数据会使字段文字,边框和背景变成深色。直到用户输入有效的数据字段颜色将恢复正常。

#send {

color: #dee5f0;

display: block;

cursor: pointer;

padding: 5px 11px;

font-size: 1.2em;

border: solid 1px #224983;

border-radius: 5px;

background: #1e4c99;

background: -webkit-gradient(linear, left top, left bottom, from(#2f52b7), to(#0e3a7d));

background: -moz-linear-gradient(top, #2f52b7, #0e3a7d);

background: -webkit-linear-gradient(top, #2f52b7, #0e3a7d);

background: -o-linear-gradient(top, #2f52b7, #0e3a7d);

background: -ms-linear-gradient(top, #2f52b7, #0e3a7d);

background: linear-gradient(top, #2f52b7, #0e3a7d);

filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#2f52b7', endColorstr='#0e3a7d');

}

#send:hover {

background: #183d80;

background: -webkit-gradient(linear, left top, left bottom, from(#284f9d), to(#0c2b6b));

background: -moz-linear-gradient(top, #284f9d, #0c2b6b);

background: -webkit-linear-gradient(top, #284f9d, #0c2b6b);

background: -o-linear-gradient(top, #284f9d, #0c2b6b);

background: -ms-linear-gradient(top, #284f9d, #0c2b6b);

background: linear-gradient(top, #284f9d, #0c2b6b);

filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#284f9d', endColorstr='#0c2b6b');

}

#send:active {

color: #8c9dc0;

background: -webkit-gradient(linear, left top, left bottom, from(#0e387d), to(#2f55b7));

background: -moz-linear-gradient(top, #0e387d, #2f55b7);

background: -webkit-linear-gradient(top, #0e387d, #2f55b7);

background: -o-linear-gradient(top, #0e387d, #2f55b7);

background: -ms-linear-gradient(top, #0e387d, #2f55b7);

background: linear-gradient(top, #0e387d, #2f55b7);

filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0e387d', endColorstr='#2f55b7');

}

CSS 按钮我使用 CSS3来创建线型渐变,代码如上使用 Fancybox

页面加载元素完成之后,调用Fancybox默认代码

$(document).ready(function() {

$(".modalbox").fancybox();

$("#contact").submit(function() { return false; });//禁用默认的窗体提交

代码的第二行禁用默认的联系人表单提交动作。为什么呢?因此这样我们可以处理自己的单击事件,并通过 Ajax 传递数据。在用户提交表单后,我们需要得到 (电子邮件和消息) 两个字段的当前值。我们还想要检查电子邮件地址是否有效和消息长度是否超过规定的长度值

$("#send").on("click", function(){

var emailval = $("#email").val();

var msgval = $("#msg").val();

var msglen = msgval.length;

var mailvalid = validateEmail(emailval);

if(mailvalid == false) {

$("#email").addClass("error");

}

else if(mailvalid == true){

$("#email").removeClass("error");

}

if(msglen < 4) {

$("#msg").addClass("error");

}

else if(msglen >= 4){

$("#msg").removeClass("error");

}上面jquery代码使用一些逻辑语句。直到电子邮件有效和消息的长度超过 4 个字母,才会提交表单。发送Ajax 请求

通过上面的onclick事件,需要将表单数据发送到 PHP。,我们将在我们的收件箱中收到电子邮件。

// 如果两个字段验证通过接下来发送消息

//点击发送按钮之后 ,按钮被替换成“发送中”这样的文字提示,目的是为了防止用户在点击提交,提示也更人性化

$("#send").replaceWith("发送中...");

$.ajax({

type: 'POST',

url: 'sendmessage.php',

data: $("#contact").serialize(),

success: function(data) {

if(data == "true") {

$("#contact").fadeOut("fast", function(){

$(this).before("

提交成功! 您的留言已经发送, 谢谢 :)

");

setTimeout("$.fancybox.close()", 1000);

});

}

}

});

}

});

这里使用serialize(),方法来序列化提交的ajax数据,使得生成标准的URL编码

服务器响应成功之后,隐藏弹出的窗体,并显示一条成功消息。我使用 setTimeout() 方法来关闭 fancybox ,这里我设置一秒钟后隐藏窗体。要执行此操作的 JS 代码是 $.fancybox.close()。

使用 PHP发送邮件

sendmessage.php 接受用户输入的变量。然后调用mail尝试发送它,发送成功返回"true"否则返回false

$sendto = "2495371937@qq.com";//定义邮件的接收者

$usermail = $_POST['email'];//获取电子邮件

$content = nl2br($_POST['msg']);//获取消息

$subject = "你有新的消息";

$headers = "来自: " . strip_tags($usermail) . "\r\n";

$headers .= "Reply-To: ". strip_tags($usermail) . "\r\n";

$headers .= "MIME-Version: 1.0\r\aan";

$headers .= "Content-Type: text/html;charset=utf-8 \r\n";

$msg = "";

$msg .= "

你有新的消息

\r\n";

$msg .= "来自: ".$usermail."\r\n";

$msg .= "内容: ".$content."\r\n";

$msg .= "";

if(@mail($sendto, $subject, $msg, $headers)) {

echo "true";

} else {

echo "false";

}

fancybox ajax post,使用jQuery fancybox插件打造一个实用的数据传输模态弹出窗体相关推荐

  1. 玩转Bootstrap(JS插件篇)-第1章 模态弹出框 :1-2 动画过渡

    动画过渡(Transitions) 这一小节我们先来讲"动画过渡(Transitions)"这个插件的使用,源文件:transition.js Bootstrap框架默认给各个组件 ...

  2. JQUERY打造隐藏在左侧的弹性弹出菜单

    代码简介: 隐藏在左侧的弹性弹出菜单,从淘宝扣下来的,也可作为JAvaScript缓冲动画的典型教程.本弹性菜单可扩展性强,实际上不光可以做成菜单,也可布局一些图文混排的内容或一段视频,总之被弹出的内 ...

  3. fancybox关闭弹出窗体parent.$.fancybox.close();

    fancybox弹出窗体右上角会自带一个关闭窗体,而且点击遮罩层也会关闭fancybox 有时我们不须要这样进行关闭,隐藏关闭窗体,而且遮罩层不可点击 在弹出窗体页面加一链接进行关闭 使用parent ...

  4. [原创]jQuery动画弹出窗体支持多种展现方式

    今天刚写的利用jQuery动画弹出窗体,支持了string.Ajax.iframe.controls四种展现方式,具体细节下面慢慢介绍,先看效果图. 动画效果 从哪个对象上触发的即从该对象开始逐渐向屏 ...

  5. ajax请求成功之后,自动打开一个空白页面,并打印出了返回内容

    一.问题描述 ajax请求成功之后,自动打开一个空白页面,并打印出了返回内容,返回值是规定的success内容:{code: "200", msg: "请求成功" ...

  6. 打造一个实用的Ubuntu

    打造一个实用的Ubuntu 作为一个新手,面对这个Ubuntu时,都会有一个无从下手的感觉,虽然论坛上有不少教程,可总觉得不太适合,有时又觉得很零散.我也有个这样的经历.也 因此,我把我使用Ubunt ...

  7. php ajax弹出框传值,PHP_Yii2.0 模态弹出框+ajax提交表单,如题 我们使用模态弹出框+ajax - phpStudy...

    Yii2.0 模态弹出框+ajax提交表单 如题 我们使用模态弹出框+ajax提交表单 首先我们把index视图的create按钮添加data-toggle 和 data-target. 代码如下: ...

  8. Yii2.0 模态弹出框+ajax提交表单

    如题 我们使用模态弹出框+ajax提交表单 首先我们把index视图的create按钮添加data-toggle 和 data-target. 代码如下: <?php echo Html::a( ...

  9. 自写jQuery插件,实现简单网页遮罩层/弹出层功能,兼容IE6、IE7

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/u010480479/article/details/25159287 本屌丝近期工作要求重写站点全部 ...

最新文章

  1. 推荐开发工具系列之--FireGestures(火狐手势命令)
  2. mono beta 3 released
  3. 深入理解Java幂等性
  4. oracle查询表的id,oracle 查看所有用户及密码 实现Oracle查询用户所有表
  5. 中职学校计算机教学探讨,中职学校计算机专业教学探讨
  6. Kali Linux Web 渗透测试秘籍 第二章 侦查
  7. 【报告分享】2022年零售行业消费趋势新主张-京东+罗兰贝格.pdf(附下载链接)...
  8. java 代码解析工具_改善 Java 代码质量的工具与方法
  9. primefaces_Primefaces工具栏,工具栏组和工具提示
  10. 一篇搞定 Redis6(完整版)
  11. 下午,无心编程,读小诗...
  12. BL2028N蓝牙+Wi-Fi双模SOC芯片,支持Matter协议,智能家居-灯控、开关
  13. java 前后端分离
  14. SpringMVC源码剖析(四)- DispatcherServlet请求转发的实现
  15. STP生成树协议(超详细小白也能看懂)
  16. 《数字图像处理》手动实现最佳陷波滤波
  17. Android NDK 编译 三方库记录 及 jni库封装问题
  18. postgresql 在流复制模式下,WAL发生以下错误的对处方法
  19. python signal模块作用_Python中的signal模块和Ctrl+C操作
  20. 复杂网络中的小世界效应是什么东西?

热门文章

  1. Android O system函数执行reboot命令失败
  2. android常用库
  3. Java实习或课设通用心得模板
  4. 【精益生产】精益、六西格玛、TOC的异同,终于搞清楚了
  5. bat route 循环
  6. 论文阅读 Neural Computation of Decisions in Optimization Problems
  7. 模电知识点总结(四) 晶体二极管的应用
  8. Unity3D相机控制
  9. 流水线技术与并行技术
  10. Linux文件属性查看和修改(非常重要)