表单通过AJAX提交尽管验证失败

时间:2014-07-24 18:45:35

标签: javascript jquery ajax forms

我是Ajax的新手,我想将它与当前使用的联系表单一起使用。表单设置为运行JS(fieldchk())以验证require字段,然后向相应的一方发送电子邮件。

我已经正确设置了Ajax,因为发送了电子邮件并在同一页面上显示了一条消息:

$('form').on('submit', function(event) {
    event.preventDefault();
    return fieldchk();
    var url = $(this).attr('action');
    var formData = $(this).serialize();
        $.post(url, formData, function(response){
            $('#feedback_form').html("<p>Thanks for contacting us!</p>");
        });
});

修改:现在表单已经过验证,如果它有效,则不会发送电子邮件。验证现在正常工作。

这是我的表单代码:

<form 
    name="feedback" 
    action="feedbackact.cfm?type=feedback" 
    method="post"  
    enctype="multipart/form-data"
>

这是我用来验证表单的代码:

function fieldchk() {
    errmsg = '';
    if (document.feedback.name.value == ''){
        errmsg = errmsg + 'You must enter your name.\n';
    }

    ... all the fields get checked like this ...

    if (errmsg > ''){
        alert(errmsg);
        return false;
    }
}

1 个答案:

答案 0 :(得分:1)

您需要在JavaScript函数中添加某种类型的验证。我会修改标记

<form 
    name="feedback" 
    action="feedbackact.cfm?type=feedback" 
    method="post"
    enctype="multipart/form-data"
>

您不需要onsubmit,因为事件侦听器已在侦听表单名称。我假设feedbackact.cfm页面是确定表单是否有效的原因?如果是这种情况,您可能需要将表单值传递给coldfusion。

然而我会这样做:

  

HTML:

<form name='feedback'><!--inputs--></form>

JavaScript:
$('form[name="feedback"]').on('submit', function() {

    var formData = this.serializeArray();

    if ( fieldcheck( formData) ) { //verifying the form data is correct

        $.post(); //post data

        Coldfusion.navigate("feedbackact.cfm?type=feedback");

    }

    else { alert('not filled out correctly!') }

});