Javascript 带附件的简单邮件发送,尽管验证仍发送
我是新来的,我不是编码专家,我还在学习,所以请耐心点。:) 我创建了一个简单的表单,用来发送带有简历附件的电子邮件。我找到了这项工作的代码,它的工作预期(发送文件正确的邮件)。我没有使用phpmailer或类似的工具,它只是简单的php邮件函数。 我想要一个客户端验证,javascript/jquery经典,稍后可能还要一个服务器端。关键是我不能阻止提交表单来处理javascript验证。我猜这是因为有一个文件(我在其他地方使用了相同的表单,没有附件,而且工作得很好)。我发布了代码,这样您就可以看到出了什么问题:Javascript 带附件的简单邮件发送,尽管验证仍发送,javascript,forms,validation,email,attachment,Javascript,Forms,Validation,Email,Attachment,我是新来的,我不是编码专家,我还在学习,所以请耐心点。:) 我创建了一个简单的表单,用来发送带有简历附件的电子邮件。我找到了这项工作的代码,它的工作预期(发送文件正确的邮件)。我没有使用phpmailer或类似的工具,它只是简单的php邮件函数。 我想要一个客户端验证,javascript/jquery经典,稍后可能还要一个服务器端。关键是我不能阻止提交表单来处理javascript验证。我猜这是因为有一个文件(我在其他地方使用了相同的表单,没有附件,而且工作得很好)。我发布了代码,这样您就可以
<form method="post" action="mail.php" id="uploadform" enctype="multipart/form-data">
<p>Name :</p>
<input name="name" id="name" type="text" />
<p>E-mail :</p>
<input name="email" id="email" type="text" />
<p>Tel :</p>
<input name="tel" id="tel" type="text" />
<p>Message :</p>
<textarea name="mex" id="mex" rows="7" cols="10"></textarea>
<p>File Upload :</p>
<input name="file" id="file" type="file">
<input type="submit" name="submit" id="submit" value="send" />
</form>
姓名:
电邮:
电话:
信息:
文件上载:
这是剧本:
<script type="text/javascript">
$(document).ready(function () {
$('#uploadform').submit(function (){
validateForm();
return false;
});
function validateForm(){
var name=document.forms["uploadform"]["name"].value;
if(name==null || name=="") {
$('#name').attr("placeholder","Who is writing?");
return false;
}
var email=document.forms["uploadform"]["email"].value;
var atpos=email.indexOf("@");
var dotpos=email.lastIndexOf(".");
if (atpos<1 || dotpos<atpos+2 || dotpos+2>=email.length) {
$('#email').val("");
$('#email').attr("placeholder", "Insert a valid e-mail address!");
return false;
}
}
});
</script>
$(文档).ready(函数(){
$('#uploadform')。提交(函数(){
validateForm();
返回false;
});
函数validateForm(){
var name=document.forms[“uploadform”][“name”].value;
如果(名称==null | |名称==“”){
$('#name').attr(“占位符”,“谁在写?”);
返回false;
}
var email=document.forms[“uploadform”][“email”].value;
var atpos=email.indexOf(“@”);
var dotpos=email.lastIndexOf(“.”);
如果(atpos您已将支票包装在submit函数的回调中
你应该像这样做:
$(document).ready(function () {
$('#submit').click(function (event){
return validateForm();
});
function validateForm(){
var name=document.forms["uploadform"]["name"].value;
if(name==null || name=="") {
$('#name').attr("placeholder","Who is writing?");
return false;
}
var email=document.forms["uploadform"]["email"].value;
var atpos=email.indexOf("@");
var dotpos=email.lastIndexOf(".");
if (atpos<1 || dotpos<atpos+2 || dotpos+2>=email.length) {
$('#email').val("");
$('#email').attr("placeholder", "Insert a valid e-mail address!");
return false;
}
return true;
}
});
$(文档).ready(函数(){
$(“#提交”)。单击(函数(事件){
返回validateForm();
});
函数validateForm(){
var name=document.forms[“uploadform”][“name”].value;
如果(名称==null | |名称==“”){
$('#name').attr(“占位符”,“谁在写?”);
返回false;
}
var email=document.forms[“uploadform”][“email”].value;
var atpos=email.indexOf(“@”);
var dotpos=email.lastIndexOf(“.”);
if(atposIf我没有错,是不是应该像return validateForm();
那样,验证返回也被考虑在内。您是否尝试过通过控制台(Item Inspector或其他)调试JS我尝试使用firebug控制台,但没有报告警告或错误。很抱歉,这不起作用。我可以编译字段,也可以不编译字段……它会发送数据,然后我会收到一封邮件。我想我现在已经尝试了所有这类变体,但我仍然无法做到这一点:(看这个:这是在JSFIDLE上工作。如果这对你不起作用,请告诉我。你也应该看看这个邮件验证:你的方法不是最可靠的。谢谢,我知道这不是可靠的验证,只是尝试一下表单。我会在我看到一切都起作用后再做一个认真的验证。:P……关于你的fiddle,它还可以,工作起来像个符咒……但在我的服务器中没有。eslewhere当时一定有问题:(哦!它工作了,它没有像我从firebug中看到的那样加载jquery库。我在本地加载了它并工作了!感谢您的支持:)