0

我正在玩弄mailto:并想知道为什么我用来收集要放入电子邮件客户端字段的数据的表单也最终出现在消息正文中,如下所示:

hello   // test body
msg_address=hello@some.com
msg_comment=hello
msg_cc_message=on 

我的表单action属性设置如下:

var form = $(this).closest('form'),
    first = "info",
    last = "some.com"
    mailto = "mailto:"+first+"@"+last+"?",
    subject = "subject=Website enquiry&",
    message = "body="+$('#msg_comment').val(),
    bcc = $('#msg_cc').is(':checked') ? "bcc=" + form.find('#msg_address').val() + "&" : "";

form.attr("action",mailto+bcc+subject+message).submit()

我希望消息正文只包含设置的内容,message而不是包含表单字段名称的整个表单内容。

问题
有什么方法可以防止表单字段出现在邮件正文中?

编辑:
这是我的表格:

<form action="" method="post" enctype="text/plain" name="mailer">
    <label for="msg_address" data-i18n="contact.label_email" class="t">Email:</label>
    <input data-role="text" type="text" id="msg_address" name="msg_address" value="" maxlength="100" />

    <label for="msg_comment" data-i18n="contact.label_message" class="t">Your Message:</label>
    <textarea rows="10" cols="20" id="msg_comment" name="msg_comment"></textarea><br />

    <input type="checkbox" name="msg_cc" id="msg_cc" class="t" data-i18n-target="" data-i18n="" />
    <label for="msg_cc" data-i18n="contact.label_cc" data-i18n-target=".ui-btn-text" class="t">CC to Email address provided</label>

    <div data-role="controlgroup" data-type="horizontal" class="mailer_menu">
      <input type="reset" value="Reset" data-i18n="contact.delete" data-i18n-target="" class="t" />
      <input type="button" id="mail_trigger" value="Send" data-i18n="contact.send" class="t" data-iconpos="right" data-i18n-target="" data-theme="b" data-icon="arrow-r" />
    </div>
  </form>
4

1 回答 1

1

当您提交表单时,根据定义,它会将类似输入的(输入、文本区域等)元素的数据发送到指定的目标。

现在在 javascript 中,您更改 action 属性以创建格式更好的电子邮件模板,但表单中仍然包含所有输入,因此根据定义,它们将添加到正文中。

为了防止这种情况,您可以将隐藏表单放入您的 html 中,其中没有类似输入的元素,甚至作为自封闭元素,然后修改操作并提交该操作。甚至可以即时创建一个。

这样,您就不会在电子邮件中包含任何您不想拥有的内容。请注意取消第一个表单的提交。

于 2013-04-03T09:20:27.113 回答