使用ASP发送电子邮件,但首先使用外部JS文件验证表单字段
Send email with ASP but first use external JS file to validate form fields
正如你可能从标题中看到的那样,我不确定这个问题的最佳表达方式,但这里是。
我目前有一个基本的html页面(default.html),其中包含一个表单、三个输入字段(名称、电子邮件、新消息)和一个提交按钮。用户单击提交按钮,该按钮使用表单标记的action属性调用emailmessage.asp。
<form method="post" action="emailmessage.asp">
<table>
<tr>
<td align="right">Name:</td>
<td><input name="name" type="text" value="Type your name here" /></td>
</tr>
<tr>
<td align="right">Email:</td>
<td><input name="email" type="text" value="Type your email here" /></td>
</tr>
<tr>
<td align="right" valign="top">Comments:</td>
<td><textarea name="comments" cols="40" rows="6"></textarea></td>
</tr>
</table>
<input name="Submit1" type="submit" value="Send Email" />
<input name="Reset1" type="reset" value="Clear Fields" />
</form>
我的电子邮件.asp代码如下:
Dim strEmail, strComments
Set myMail=CreateObject("CDO.Message")
myMail.Subject="Questions and Comments"
myMail.From=Request.Form("email")
myMail.To=Request.Form("noname@hotmail.com")
myMail.TextBody=Request.Form("newmessage")
myMail.Send
set myMail=nothing
好的,这是可行的,但是,当用户单击提交按钮时,我想使用外部JavaScript文件来执行客户端验证。如果一切顺利,Javascript文件将调用emailmessage.asp文件。最后,当电子邮件发送时,我想重定向到一个基本的html确认页面。
我想我的问题不仅仅是关于代码,还有执行这项任务的最佳流程或逻辑。如有任何关于我如何做到这一点的建议,我们将不胜感激。
谢谢M
一个非常简单的答案是
你需要做一些事情。
-
在html的头部分包含对外部javascript文件的引用例如
<script type="text/javascript"src="http://site.com/scripts/myscript.js><脚本>
-
在外部javascript文件中,创建一个用于验证字段的函数。如果遇到错误,它应该显示错误并返回false。例如
function validate(t){ var err = ""; if (t.name == "") err = "no name" if (err != ""){ alert(err); return false; } }
你需要创建你真正的验证函数,而不仅仅是上面的,这是一个简单的例子。
-
在html中更改提交按钮并添加onclick="validate(this.form)"
-
在ASP中,您需要一个response.redirect将其重定向到新页面。-我不记得这是怎么做到的,在asp.net中是响应重定向("新url")
完成所有这些之后,你也应该在你的asp代码中进行验证——特别是如果这是一个公共网站,很容易绕过javascript,电子邮件表单是垃圾邮件发送者的游乐场等等。
HTH-
编辑-正如HeavenCore所说-在表单的onSubmit上比onclick 要好得多
尽量避免依赖submit
按钮onlick
句柄来调用验证函数。
相反,使用onsubmit+return方法:
<script type="text/javascript">
function ValidateForm() {
if ($("TextValue") === "") {
alert("Please enter a value in TextValue box.");
return false;
} else {
return true;
}
}
</script>
<form onsubmit="return ValidateForm()">
<input type="text" id="TextValue" />
<input type="submit" />
</form>
每当要提交表单时,都会调用onsubmit
单击特定按钮时会触发onclick
,例如,如果用户使用另一种方法/ENTER
键提交表单,则不可靠(尽管有些浏览器很聪明,无论如何都会执行onclick事件)。
- 如何在运行时在angular 2中加载外部js脚本
- 敲除js外部模板引擎-没有加载模板
- D3.js外部 JSON 文件
- 在所有浏览器上执行没有扩展名.js外部脚本重定向
- 汇总.js:外部依赖项中未定义的对象
- 通过 .scope().call() 从 JS 外部调用 Angular 服务会挂起请求
- React.js外部脚本
- Express js外部javascript文件未加载
- Js外部是不工作的头部标签的html
- Meteor.js +外部蒙古包.Meteor无法登录Mongo
- JS:外部加载
- .js外部模板
- 路由的Node.js外部文件
- RestMVC.js(猫鼬),Node.JS -外部模型文件
- Cheerio Node.JS外部标题链接问题
- 如何将所有js外部脚本标记合并为一个
- Mustache.js外部模板(不带jQuery)
- 来自经典asp页面的FullCalendar.js外部事件数据
- Knockout.js外部模板,不需要require.js
- 从.js/外部文件生成工具提示文本