1

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

谁能帮我解决这个问题?当前涉及的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

4

2 回答 2

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()功能由您来解决。

于 2013-10-01T23:49:43.503 回答
1

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

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

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

如果我理解正确,您似乎正在使用 Javascript 进行错误处理(这很好),但通过 PHP 显示错误。正如 Hydra IO 所说,不要混淆客户端和服务器端。让他们处理他们需要处理的事情。

希望这可以帮助。

于 2013-10-01T23:37:05.727 回答