Table des matières
发送消息给我们
你有新的消息
Maison interface Web js tutoriel 使用jQuery fancybox插件打造一个实用的数据传输模态弹出窗体_jquery

使用jQuery fancybox插件打造一个实用的数据传输模态弹出窗体_jquery

May 16, 2016 pm 05:43 PM
数据传输

模态窗体已经成为Web开发人员设计界面时经常要使用的传输数据的方式。通过模态窗口,可以提高网站的可用性。正好项目的需要,有个客户想要模态弹出的窗体来提交网站的反馈,经过一番测试实现了,我使用jQuery fancybox插件来创建一个漂亮的模态窗体,提交表单的数据在服务器端实现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 $("#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";
}

演示
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment transférer toutes les données entre deux iPhones Explication détaillée : Comment migrer les données d'anciens téléphones Comment transférer toutes les données entre deux iPhones Explication détaillée : Comment migrer les données d'anciens téléphones Mar 18, 2024 pm 06:31 PM

Lorsque de nombreux amis changent de téléphone Apple, ils souhaitent importer toutes les données de l'ancien téléphone vers le nouveau téléphone. En théorie, c'est tout à fait réalisable, mais en pratique, il est impossible de « transférer toutes » les données. Énumérez plusieurs façons de « transférer une partie des données ». 1. iTunes est un logiciel préinstallé sur les téléphones mobiles Apple. Il peut être utilisé pour migrer toutes les données des anciens téléphones mobiles, mais il doit être utilisé conjointement avec un ordinateur. La migration peut être effectuée en installant iTunes sur l'ordinateur, puis en connectant le téléphone et l'ordinateur via un câble de données, en utilisant iTunes pour sauvegarder les applications et les données du téléphone, et enfin en restaurant la sauvegarde sur le nouveau téléphone Apple. 2. iCloudiCloud est l'outil « espace cloud » exclusif d'Apple. Vous pouvez d'abord vous connecter à votre ancien téléphone.

Guide d'appel de l'API React : Comment interagir et transférer des données avec l'API backend Guide d'appel de l'API React : Comment interagir et transférer des données avec l'API backend Sep 26, 2023 am 10:19 AM

Guide d'appel ReactAPI : Comment interagir avec et transférer des données vers l'API backend Présentation : Dans le développement Web moderne, interagir avec et transférer des données vers l'API backend est une exigence courante. React, en tant que framework frontal populaire, fournit des outils et fonctionnalités puissants pour simplifier ce processus. Cet article explique comment utiliser React pour appeler l'API backend, y compris les requêtes de base GET et POST, et fournit des exemples de code spécifiques. Installez les dépendances requises : Tout d'abord, assurez-vous qu'Axi est installé dans le projet

Utilisation de HTTPS pour la transmission de données dans le développement d'API Java Utilisation de HTTPS pour la transmission de données dans le développement d'API Java Jun 18, 2023 pm 10:43 PM

Avec le développement de la science et de la technologie, la communication en réseau est devenue l’un des outils importants de transmission de l’information dans la société moderne. Mais dans le même temps, la transmission d’informations sur le réseau est confrontée à des risques d’attaques malveillantes et de vol, la sécurité est donc particulièrement importante. C’est sur cette base qu’est né le protocole HTTPS. Il s'agit d'un protocole qui ajoute le cryptage SSL/TLS au protocole HTTP pour assurer la sécurité de la transmission réseau. En tant que langage largement utilisé dans le développement de réseaux, Java fournit naturellement une API riche pour prendre en charge le protocole HTTPS. Cet article sera

PHP trait DTO : un outil clé pour optimiser le processus de transfert de données PHP trait DTO : un outil clé pour optimiser le processus de transfert de données Oct 12, 2023 pm 02:33 PM

PHPtraitDTO : Un outil clé pour optimiser le processus de transfert de données, des exemples de code spécifiques sont requis Présentation : Dans le développement PHP, le transfert de données est une tâche très courante, comme la transmission de données du contrôleur à la vue, la transmission de données de l'interface au front fin, etc Cependant, lors du processus de transmission des données, celles-ci doivent souvent être traitées, converties et encapsulées, ce qui peut entraîner une redondance du code et des difficultés de maintenance. Pour résoudre ce problème, nous pouvons utiliser PHPtraitDTO (DataTransfer

PHP trait DTO : un outil clé pour optimiser le processus de transfert de données PHP trait DTO : un outil clé pour optimiser le processus de transfert de données Oct 12, 2023 pm 03:10 PM

PHPtraitDTO : Un outil clé pour optimiser le processus de transmission de données, des exemples de code spécifiques sont nécessaires Introduction : Au cours du processus de développement, la transmission de données est une exigence très courante, en particulier lorsque les données sont transférées entre différents niveaux. Lors du processus de transmission de ces données, nous devons souvent traiter, vérifier ou convertir les données pour répondre aux différents besoins de l'entreprise. Afin d'améliorer la lisibilité et la maintenabilité du code, nous pouvons utiliser PHPtraitDTO (DataTransferObject) pour optimiser

Pratique des fonctions de contrôle de périphériques et de transmission de données du C++ dans le développement de systèmes embarqués Pratique des fonctions de contrôle de périphériques et de transmission de données du C++ dans le développement de systèmes embarqués Aug 25, 2023 pm 07:10 PM

Introduction à la pratique des fonctions de contrôle des périphériques et de transmission de données du C++ dans le développement de systèmes embarqués : En tant que technologie avec un large éventail d'applications, les systèmes embarqués sont largement utilisés dans de nombreux domaines, tels que l'automobile, les appareils électroménagers, les équipements médicaux, etc. Dans le développement de systèmes embarqués, le contrôle des périphériques et la transmission de données constituent une fonction très importante. Cet article présentera comment utiliser le langage C++ pour implémenter les fonctions de contrôle et de transmission de données des périphériques et fournira des exemples de code pratiques. 1. Pratique de la fonction de contrôle des périphériques C++ Dans les systèmes embarqués, le contrôle des périphériques fait référence à la

Comment appeler l'interface API en PHP pour réaliser la transmission et le traitement des données ? Comment appeler l'interface API en PHP pour réaliser la transmission et le traitement des données ? Sep 06, 2023 am 08:21 AM

Comment appeler l'interface API en PHP pour réaliser la transmission et le traitement des données ? Avec le développement d’Internet, l’utilisation de divers services Web et interfaces API devient de plus en plus courante. Une API (Application Programming Interface) est une spécification technique qui permet l'interaction de données entre différentes applications. En tant que langage de script largement utilisé dans le développement Web, PHP dispose de capacités d'appel d'API puissantes et flexibles. Cet article explique comment utiliser le langage PHP pour appeler l'interface API afin de réaliser la transmission et le traitement des données. 1. Préparation avant d'appeler l'API

Communication PHP : Comment gérer les interruptions de transfert de données ? Communication PHP : Comment gérer les interruptions de transfert de données ? Aug 19, 2023 pm 10:33 PM

Communication PHP : Comment gérer les interruptions de transfert de données ? IntroductionPendant le processus de transmission des données, la transmission des données peut être interrompue en raison de l'instabilité du réseau ou d'autres raisons. Pour les développeurs, la gestion des interruptions de transfert de données est une question très importante. Cet article expliquera comment gérer l'interruption du transfert de données en PHP et fournira des exemples de code pertinents. Méthodes de gestion des interruptions de transmission de données : Définition du délai d'attente Lors de la transmission de données, vous pouvez définir un délai d'attente approprié. Si la transmission des données n'est pas terminée dans le délai d'attente,

See all articles