Javascript 未捕获引用错误:未在HTMLFormElement.onsubmit上定义generateThankyou
我有一个基本的咨询提交表,可以在我的网站的联系人页面上触发一封电子邮件。我不希望它触发一个新页面或页面刷新,所以我有一个表单将操作定向到一个iframe,这一切都很好,但是我现在尝试使用onSubmit(或点击提交按钮)功能,将Javascript 未捕获引用错误:未在HTMLFormElement.onsubmit上定义generateThankyou,javascript,html,Javascript,Html,我有一个基本的咨询提交表,可以在我的网站的联系人页面上触发一封电子邮件。我不希望它触发一个新页面或页面刷新,所以我有一个表单将操作定向到一个iframe,这一切都很好,但是我现在尝试使用onSubmit(或点击提交按钮)功能,将contactformdiv设置为display:none和联系人提交至显示:块,但是我收到了未捕获引用错误:GenerateThyYou未在HTMLFormElement上定义。onsubmit错误,我尝试过调整,但没有任何帮助。我有其他的html触发器调用js函数,就
contactform
div设置为display:none代码>和联系人提交至显示:块
,但是我收到了未捕获引用错误:GenerateThyYou未在HTMLFormElement上定义。onsubmit
错误,我尝试过调整,但没有任何帮助。我有其他的html触发器调用js函数,就像这些函数一样,工作得很好,所以我不明白我做错了什么。我曾尝试查找与我类似的问题,但作为一名初学者,我觉得这些问题中的任何一个都不是特别适用于我的场景(或者至少不幸的是,我不知道如何将它们应用于我自己的代码)。我不想重复内容,如果有人能告诉我一个能回答这个问题的问题,我很乐意记下这个
HTML
JS
我不确定问题出在哪里——正如我所说,我有其他内容块使用完全相同的方法正确运行。在哪里定义了generateThankyou
?在同一页的
块中?在外部.js
文件中?如果是这样,该文件是否包含在您的HTML页面中?它位于链接到我的HTML的外部.js文件中,我知道它链接正确,因为其他功能(也在该文件中)正在工作。请确保您的浏览器未提供可能不具有generateThankyou
功能的缓存副本。如果您使用的是Chrome,则可以使用源代码控制台查看包含的文件内容。如果将函数放置在document.ready块中,则可能会发生这种情况。那么它在外面是看不见的。把它放在文档外面。准备好了,它就会工作。谢谢你们,我终于让它工作了。我感谢你的帮助。
<div id="contactform">
<iframe name="submission" style="display:none;"></iframe>
<form action="advancedweb.php" method="post" target="submission" onSubmit="generateThankyou()">
<h3>
Name <br><input type="text" name="fname"><br>
e-mail <br><input type="text" name="email"><br><br>
Message
<br><textarea name="comment" id="comment" cols="45" rows="6"></textarea>
<label for="comment"></label>
<br>
<input type="submit" value="Send Message">
</h3>
</form>
</div>
<div id="contactsubmitted">
<h3>Thankyou, <?php echo $_POST["fname"]; ?></h3>
<br>
<p>
Your message,
<br>
<?php echo $_POST["comment"]; ?>,
has been sent on its way! We'll get back to you as soon as we can!
</p>
</div>
#contactform {
float: right;
width: 400px;
height: 273px;
}
#contactsubmitted {
display: none;
float: right;
width: 400px;
height: 273px;
}
function messageComplete() {
var completedMessage = document.getElementById("contactform");
completedMessage.style.display = "none";
}
function messageResponse() {
var thankyouMessage = document.getElementById("contactsubmitted");
thankyouMessage.style.display = "block";
}
function generateThankyou() {
messageComplete();
messageResponse();
}