Javascript 带附件的简单邮件发送,尽管验证仍发送

Javascript 带附件的简单邮件发送,尽管验证仍发送,javascript,forms,validation,email,attachment,Javascript,Forms,Validation,Email,Attachment,我是新来的,我不是编码专家,我还在学习,所以请耐心点。:) 我创建了一个简单的表单,用来发送带有简历附件的电子邮件。我找到了这项工作的代码,它的工作预期(发送文件正确的邮件)。我没有使用phpmailer或类似的工具,它只是简单的php邮件函数。 我想要一个客户端验证,javascript/jquery经典,稍后可能还要一个服务器端。关键是我不能阻止提交表单来处理javascript验证。我猜这是因为有一个文件(我在其他地方使用了相同的表单,没有附件,而且工作得很好)。我发布了代码,这样您就可以

我是新来的,我不是编码专家,我还在学习,所以请耐心点。:)

我创建了一个简单的表单,用来发送带有简历附件的电子邮件。我找到了这项工作的代码,它的工作预期(发送文件正确的邮件)。我没有使用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库。我在本地加载了它并工作了!感谢您的支持:)