- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
出于某种原因,我似乎总是遇到困难,那就是设置联系表单和邮件脚本以及所有内容......这次是针对单页网站(我自己的投资组合),因此需要一个无需页面刷新的动态解决方案或外部链接等。我对此不太有经验。
我的网站是:http://www.samnorris.co.nz
我一直在尝试学习http://www.alwayscreative.net的网站以及他们是如何设置的。该表单使用 GitHub 上一个名为 FormSentinel 的小型 jQuery 插件来处理验证方面的事情 - 这似乎工作得很好,提交按钮被禁用,直到表单完成并提示输入正确的电子邮件地址,问题是单击提交/“传输”按钮时没有任何反应。
这可能是因为我没有链接到任何 PHP 脚本来实际处理表单,因为我不确定在这种情况下它实际上是从哪里调用的。我的服务器根目录上有一个非常基本的 mail.php - 但是从查看 AlwaysCreative 网站来看,表单操作链接回页面本身,并且 FormSentinel jquery(或文档或任何与此相关的事情......)
我只是有点困惑(好吧,非常困惑)如何或在哪里准确地建立指向表单的 PHP 处理脚本的链接而不导致任何其他外部链接/页面。使用 FormSentinel 插件,页面应该淡出表单并加载一条简短的“谢谢”消息来代替包含的字段集,但这也没有发生。
表单的 JavaScript:
;(function($) {
var formSentinel = {
submitting: false,
fields: [],
rules: {
required: /./,
requiredNoWhitespace: /\S/,
email: /\S/
},
init: function(form) {
this.fields = form.elements;
$('#submit-btn').removeClass('success').attr('disabled', 'disabled');
for (var i = 0; i < this.fields.length; i++) {
if ($(this.fields[i]).val() === '') {
$(this.fields[i]).bind('focus', function() {
formSentinel.statusListener(form);
});
$(this.fields[i]).bind('blur', function() {
formSentinel.statusListener(form);
});
}
$(this.fields[i]).bind('keydown, keyup', function() {
var self = $(this);
formSentinel.statusListener(form);
if (self.hasClass('invalid') || self.hasClass('valid')) {
self.bind('keydown', function() {
formSentinel.fieldListener(this);
});
}
});
}
$(form).submit(function () {
if (formSentinel.submitting === false) {
formSentinel.submitListener(this);
$('html, body').animate({scrollTop: $(form).offset().top}, 800);
}
return false;
});
},
fieldListener: function(field) {
var className = field.className;
var classRegExp = /(^| )(\S+)( |$)/g;
var classResult;
while (classResult = classRegExp.exec(className)) {
var oneClass = classResult[2];
var rule = this.rules[oneClass];
if (typeof rule != "undefined") {
if (!rule.test(field.value)) {
$(field).addClass('invalid').removeClass('valid');
}
else {
$(field).addClass('valid').removeClass('invalid');
}
}
}
},
statusListener: function(form) {
var failure = false;
for (var i = 0; i < this.fields.length; i++) {
var className = this.fields[i].className;
var classRegExp = /(^| )(\S+)( |$)/g;
var classResult;
while (classResult = classRegExp.exec(className)) {
var oneClass = classResult[2];
var rule = this.rules[oneClass];
if (typeof rule != "undefined") {
if (!rule.test(this.fields[i].value)) {
failure = true;
}
}
}
}
if (failure === true) {
$('#submit-btn').removeClass('success').attr('disabled', 'disabled');
}
else {
$('#submit-btn').addClass('success').removeAttr('disabled');
}
},
submitListener: function(form) {
var failure = false;
formSentinel.submitting = true;
for (var i = 0; i < this.fields.length; i++) {
var className = this.fields[i].className;
var classRegExp = /(^| )(\S+)( |$)/g;
var classResult;
while (classResult = classRegExp.exec(className)) {
var oneClass = classResult[2];
var rule = this.rules[oneClass];
if (typeof rule != "undefined") {
if (!rule.test(this.fields[i].value)) {
$(this.fields[i]).removeClass('valid').addClass('invalid');
failure = true;
}
else {
$(this.fields[i]).removeClass('invalid').addClass('valid');
}
}
}
}
if (failure) {
$('#msg').fadeOut().remove();
$('#cf-header').after('<div id="msg" style="display: none;">Your form was not submitted. Please make sure that you have filled out the highlighted fields correctly.</div>');
$('#msg').fadeIn();
//}
formSentinel.submitting = false;
return false;
}
else {
$.ajax({
type: 'POST',
url: '/',
data: $(form).serialize(),
success: function(data) {
if ($(data).find('#success-msg').length > 0) {
var successMsg = $(data).find('#success-msg');
$('#msg, p.error, #cf-fieldset').fadeOut().remove();
$('#cf-header').after('<div id="msg" style="display: none;"></div>');
$('#msg').html(successMsg);
$('#msg').fadeIn();
}
else if ($(data).find('#error-msg .error').length > 0) {
var errorMsg = $(data).find('#error-msg .error');
$('#msg').fadeOut().remove();
$('#cf-header').after('<div id="msg" style="display: none;"></div>');
$('#msg').html(errorMsg);
$('#msg').fadeIn();
}
formSentinel.submitting = false;
}
});
}
}
}
$.fn.formSentinel = function() {
return this.each(function() {
formSentinel.init(this);
});
};
})(jQuery);
$('#request-form').formSentinel();
$('a[href^="mailto:"]').each(function() {
var self = $(this);
var obscuredEmail = this.href.replace(/mailto:/g, '');
var unobscuredEmail = obscuredEmail.replace(/\/at\//g, '@');
self.attr('href', 'mailto:' + unobscuredEmail).text(self.text().replace(obscuredEmail, unobscuredEmail));
});
表单本身:
<form action="#request-form" method="post" id="request-form" class="form" autocomplete="off">
<input type="hidden" name="consultForm" value="consultForm">
<div class="contact-heading project"><h4 id="cf-header">Send direct transmission</h4></div>
<hr class="contactrule" />
<fieldset id="cf-fieldset">
<div class="form-field">
<label for="name">Full Name</label>
<input type="text" name="name" id="name" placeholder="Full Name" class="requiredNoWhitespace " value="">
</div>
<div class="form-field">
<label for="email">Email</label>
<input type="email" name="email" id="email" placeholder="Email" class="requiredNoWhitespace " value="">
</div>
<div class="form-field">
<label for="phone">Phone Number</label>
<input type="text" name="phone" id="phone" placeholder="Phone Number" class="requiredNoWhitespace " value="">
</div>
<div class="form-field">
<label for="type">Project Details</label>
<input type="text" name="message" id="type" placeholder="Your Message or Project Details" class="requiredNoWhitespace " value="">
</div>
<button type="submit" name="submit" class="submit" id="submit-btn">Transmit</button>
</fieldset>
</form>
这是我极其基本的 mail.php,我只是从 Google 的某个地方抓取了它(我目前对 PHP 还不太精通,所以......)
<?php
$name = $_POST['name'];
$email = $_POST['email'];
$phone = $_POST['phone'];
$message = $_POST['message'];
$formcontent=" From: $name \n Phone: $phone \n Message: $message";
$recipient = "theperfectpixels@gmail.com";
$subject = "Sam Norris - Design & Development";
$mailheader = "From: $email \r\n";
mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");
?>
像往常一样,我将非常感谢任何帮助!
最佳答案
该表单似乎已发布到网站的根目录。您的 PHP 脚本(通常是 index.php)将在那里并包含一个 if 来检查请求类型是否为 POST - 然后处理邮件部分。否则,如果请求是 GET,则在原始帖子中输出 JS 和 HTML。有什么理由必须将其放在一页/文件中吗?
关于javascript - 在单页网站上设置联系表单/脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23467200/
我正在尝试连接到 webapi,该位置在我的 js jquery 文件中看起来像这样。 example.com/?var=input 有没有比 ajax 调用更简单的方法? 最佳答案 我会为此使用 A
我编写了 PHP 代码,它连接到 MYSQL 来查找信息,将其发送到 API,并获取响应以写回到新表中。 有时它工作得很好,有时则不然。如果没有,它会给我这个错误 You have an error
每个子列表都意味着他们是 friend ,现在我想创建一个函数 def is_connected_via_friendships_with 来检查他们是否通过与另一个人的友谊联系在一起。例如,玛丽是卢
我正在尝试将 Cassandra 与 Hector 联系起来: public class Main { public static void main(String[] args) {
我正在使用 mautic API 进行电子邮件列表和电子邮件发送。我正在尝试使用 mautic API auth2.0 获取所有电子邮件列表我正在正确获取访问 token ,但是当我像这样调用电子邮件
我已经与Windows Forms Application进行了简单的聊天。我正在使用套接字,当我尝试连接本地IP时,一切正常,并且可以在本地发送消息。 但是,当我尝试使用外部IP连接到我的 frie
我正在开发我的第一个 GWT 应用程序,它将使用来自 RESTful API 的数据。 我试图找出构建整个应用程序的最佳方法。 GWT 客户端应该与 Java 服务器端联系,然后再联系 API,还是
我对线程中的异常处理有疑问。我有一个简单的 WCF 服务,它需要一些字节作为输入。此 WCF 服务是从控制台应用程序调用的。 方法片段(我的方法) try { _service.ImportBy
我正在尝试编写一个基本的卷应用程序。由于我是用 Ruby 编写的,因此我不想扩展 C 库或使用 ffi ,而是尝试使用 ruby-dbus 编写它,我使用 Address 获得了 /org/pulse
我知道在 CRM 2011 中您无法将联系人转换为潜在客户。在 CRM 2013 中是否可行。 简单来说,我创建了一个联系人并将其分组到一个帐户中。我想将此联系人转换为潜在客户,以便我可以输入销售信息
如何在我的网站页面上添加共享按钮,我们可以使用以下代码在移动 HTML 页面上添加发送短信: title 如何在 Viber、Watsapp 等分享中使用此示例 最佳答案 仅限 HTML 页面。我通常
我想了解 Azure 在门户中创建 Web 应用程序机器人时会做什么。 An Azure Bot Service Bot deployed to an Azure App Service Web Ap
我目前正在构建 Android 4.4。与 seek-for-android在我的 Nexus 5 上获得 UICC 支持。 到目前为止还没有成功。我确实应用了提到的所有补丁 here和 here .
我开发了一个用于农村 Activity 和监控/管理的应用程序。 我的应用程序在白天收集了大量数据,需要将其发送到云端进行处理和分析。在一个正常的 8 小时工作日中,它可以收集多达 2Gb 的数据(大
我编写了一个连接器来从 mysql 获取数据,当 iam 在路由内运行 Mysql 连接器时,它显示错误,并且浏览器正在运行到无限循环。 var express = require('express'
我最近有一个高级主题,mailchimp 的表单看起来非常酷。 我想知道我是否可以将样式用于我的 3 Field Based Contact 表单“REQUEST A CALL BACK”- 名称输入
我正在尝试将基本的 onClick 事件附加到设备中的联系人列表。联系人列表已正确生成。我的代码摘要如下: public class Contacts extends AppCompatActivit
我有一种方法可以根据 Active Directory 验证用户凭据。我想将此方法与 SSL 结合使用,但无法正常工作。 主要问题是我有一个在我们网络之外的服务器(它叫 DMZ 吗?)。从那里我想联系
我正准备在 symfony Doctrine 中开始一个项目,但我必须与多个数据库建立连接。其中之一是无法使用 ORM 映射的现有数据库 (SQL SERVER)。是否有可能将此数据库与另一个未在 D
尝试为 openstack USSURI 版本设置 Controller 节点时。我被要求将 Glance 服务设置为 VM 图像管理子服务。 根据要求:article (在 ubuntu 18.04
我是一名优秀的程序员,十分优秀!