我有一个固定位置的表单,可以滚动到文档上并填写在页面的任何位置。如果他们未能正确填写表单,则错误目前会在表单上显示,这是该方面的预期设计。我目前不知道该怎么办,如果表单已完成且$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
答案 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()
功能由您决定。