我想通过弹出窗口发送电子邮件

时间:2017-11-27 21:24:22

标签: javascript html

我想通过弹出窗口发送电子邮件,我只能使用,因此是不行的。

这是我到目前为止编写的代码:

<!DOCTYPE html>
<html>

<head>
  <style>
    h2 {
      font-size: 20pt;
      font-family: arial;
      color: black;
      background-color: blue;
      letter-spacing: 2.5pt
    }

    fieldset {
      border: 5px solid blue
    }

    legend {
      padding: 0em 0.2em;
      border: 1px solid blue;
      color: green;
      font-size: 30%;
      text-align: center;
    }
  </style>
  <title> ergasthrio 4 JavaScript</title>
  <meta charset="utf-8">
</head>

<body>
  <form name="myForm" id="form1" onsubmit="return validateForm()" method="post">
    <fieldset>
      <legend>
        <h2>Communication Form</h2>
      </legend>

      Name*: <input type="text" name="fname" id="fname"><br> Last Name*:<input type="text" name="lname" id="lname"><br> Email*:
      <input type="email" name="email" id="email"><br> Message*:
      <br><textarea rows="6" cols="60" name="message" id="message" form="form1"> </textarea><br>
      <input type="submit" id="submitbutton" value="ΑΠΟΣΤΟΛΗ">
      <input type="reset" id="resetbutton" value="ΑΚΥΡΩΣΗ">
      <p style="text-align: center;">ΤΑ ΣΤΟΙΧΕΙΑ ΜΕ * ΕΙΝΑΙ ΥΠΟΧΡΕΩΤΙΚΑ</P>
    </fieldset>
  </form>
  <script>
    function send() {
      window.open('mailto:test@example.com?subject=subject&body=body');
    }

    function validateForm() {
      var x = document.forms["myForm"]["fname"].value;
      var y = document.forms["myForm"]["lname"].value;
      var z = document.forms["myForm"]["email"].value;
      var e = document.forms["myForm"]["message"].value;
      if (x == "" || y == "" || z == "" || e == "") {
        alert("Fill in the blanks");
      } else {
        var confirmwindow = window.open("", "_black", "width=560,height=190");
        confirmwindow.document.writeln("<h3>Σιγουρα θελετε να στειλετε την παρακατω φορμα?</h3>");
        confirmwindow.document.write("<b>Name*: </b>" + x + "<br>");
        confirmwindow.document.writeln("<b>Last Name*: </b>" + y + "<br>");
        confirmwindow.document.writeln("<b>Email*: </b>" + z + "<br>");
        confirmwindow.document.writeln("<b>Message*: </b><br>" + e + "<br><br>");
        confirmwindow.document.write("<input type='submit' onclick='send()' id='submitbutton' value='ΑΠΟΣΤΟΛΗ'>" + " ");
        confirmwindow.document.write("<input type='button' id='resetbutton' value='ΑΚΥΡΩΣH'>");
      }
    }
  </script>

我的问题尤其在这一行confirmwindow.document.write("<input type='submit' onclick='send()' id='submitbutton' value='ΑΠΟΣΤΟΛΗ'>"+ " "); 因为弹出窗口的按钮似乎根本不起作用。

关于我做错了什么以及我能做些什么来修复它的想法?

1 个答案:

答案 0 :(得分:0)

备注和想法。

  1. validateForm返回false,以防止将通讯表单提交给服务器并刷新页面。

    function validateForm() {
        // existing code ...
    
        return false;
    }
    

    或者,您可以将输入类型更改为&#34;按钮&#34;并添加一个onclick处理程序来调用validateForm

  2. send函数在打开窗口中定义,而不是弹出窗口。你可以替换

    onclick="send()"
    

    onclick="opener.send()"
    

    在确认窗口中使用打开窗口作为上下文调用send函数。注意使用&#34;提交&#34;确认窗口中的类型输入具有误导性,因为元素不在表单中并且不会提交任何内容。如果您愿意,可以使用按钮类型输入来反映元素的用法。

  3. 确认页面上的重置按钮没有任何单击处理程序可以执行任何操作。 (待完成)

  4. &#34; mailto:&#34; URL仍取决于用户的浏览器设置和电子邮件客户端功能。它不适用于我安装的设置,我安装的(非常旧的)电子邮件客户端会抛出错误。有多少用户会遇到问题我不能回答,所以进一步的研究可能会有所帮助。

  5. 电子邮件地址&#34; mailto&#34;链接可以被收集并添加到垃圾邮件发送者传播的邮件列表中。像&#34;这样的搜索字词可以通过mailto邮件地址:收集垃圾邮件以获取垃圾邮件&#34;将提供进一步的信息和讨论。

  6. 结束</body></html>标记丢失(很容易修复)