使用ASP发送电子邮件,但首先使用外部JS文件验证表单字段

Send email with ASP but first use external JS file to validate form fields

本文关键字:JS 外部 文件 验证 字段 表单 ASP 电子邮件 使用      更新时间:2023-09-26

正如你可能从标题中看到的那样,我不确定这个问题的最佳表达方式,但这里是。

我目前有一个基本的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

一个非常简单的答案是

你需要做一些事情。

  1. 在html的头部分包含对外部javascript文件的引用例如

    <script type="text/javascript"src="http://site.com/scripts/myscript.js><脚本>

  2. 在外部javascript文件中,创建一个用于验证字段的函数。如果遇到错误,它应该显示错误并返回false。例如

    function validate(t){
    var err = "";
    if (t.name == "") err = "no name"
    if (err != ""){
        alert(err);
        return false;
    }
    }
    

你需要创建你真正的验证函数,而不仅仅是上面的,这是一个简单的例子。

  1. 在html中更改提交按钮并添加onclick="validate(this.form)"

  2. 在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事件)。