JS / JQuery / PHP - 如何在表单验证失败时回显错误,并在成功时跳转到div?

时间:2013-10-01 22:54:34

标签: javascript php jquery html css

我有一个固定位置的表单,可以滚动到文档上并填写在页面的任何位置。如果他们未能正确填写表单,则错误目前会在表单上显示,这是该方面的预期设计。我目前不知道该怎么办,如果表单已完成且$errors[]为空,则使用jQuery scrollTop()跳到底部。

有人可以帮我解决这个问题吗?当前涉及的javascript是:

$("#A_FORM_submit_button").click(function() {
    $("#FORM_A").submit( function () {    
    $.post(
        'ajax/FORM_A_processing.php',
         $(this).serialize(),
         function(data){
             $("#A_errors_").html(data);
         }
    );
    return false;   
    }); 
});

所涉及的PHP只是

if (!empty($errors)){
    // echo errors
} else { // echo success message}  <-- would like to jump to div as well

编辑 - 为清晰起见:不想让页面跳转发生在php文件中,而是返回jq $ .post函数的值来检查然后执行if / else

2 个答案:

答案 0 :(得分:1)

我可能会在这里跳枪,但我相信你的设计是错误的,这就是你遇到这个问题的原因。

处理表单验证的理想方式是通过Javascript验证表单,当用户输入他们的信息时,您会立即显示一些指示符,要求他们更正。只要验证不正确,您就不应该接受表单请求或进行任何AJAX调用。

如果他们成功发送数据的可能性很小,您应该通过PHP进行验证检查,如果失败,将重定向到带有表单的原始页面。从那里你可以做任何你想要的错误处理,但理想情况下你会保留他们输入的信息,并指出它为什么是错误的(Javascript应该抓住这个,但我想如果它到达这里,用户可能有JS关闭或你的验证逻辑可能是错误的)

如果我理解正确,看起来你正在使用Javascript进行错误处理(没关系)但是通过PHP显示错误。正如Hydra IO所说,不要混淆客户端和服务器端。让他们处理他们需要处理的事情。

希望这有帮助。

答案 1 :(得分:1)

@aug非常清楚地描述了这个场景。

在代码中,它会转换为类似

的内容
$('form').submit(function(){

    form_data = $(this).serialize();

    if(!validate(form_data))
    {
        // deal with validation, show error messages

        return false;
    }
    else
    {
        // Submit form, either via Ajax $.post() or by just returning TRUE
    }
});

validate()功能由您决定。