在表单上遇到错误时关闭加载动画

时间:2014-11-22 14:31:37

标签: php jquery ajax forms

我有一个简单的电子邮件表单,在点击提交时打开加载动画(jQuery):

onClick="$('.loader').css('visibility', 'visible');

jQuery表单处理程序将ajax数据发送到PHP邮件文件以进行处理和错误检查,从而关闭动画:

if(trim($name) == 'Name *') {
exit('<div class="error_message">You must enter your name.</div>
<style type="text/css">.loader { visibility: hidden !important; }</style>');

只对第一个表单错误进行处理。任何后续错误都不会打开/关闭加载程序。

不清楚为什么如果PHP脚本将visibility属性更改为隐藏,为什么不能将属性转回到可见状态,因为每次点击提交按钮时加载器都应该可见!我承认自己是一个PHP菜鸟,所以请不要砸我的分数。

2 个答案:

答案 0 :(得分:1)

或者,您可以先收集所有错误,然后结束,最后合并所有错误,然后退出:

$errors = array(); // an array that will hold the errors
// errors, push them inside the container
if(trim($name) == 'Name *') $errors[] = '<div class="error_message">You must enter your name.</div>';
if(trim($email) == 'Email something') $errors[] = '<div class="error_message">You must enter your email.</div>';

if(!empty($errors)) { // if there are errors
    // add the style on the first position
    array_unshift($errors, '<style type="text/css">.loader { visibility: hidden !important; }</style>');
    echo implode("\n", $errors); // join them all
    exit;
}

答案 1 :(得分:0)

感谢Ghost在jQuery AJAX调用的成功函数上使用loader visibility属性。我在PHP服务器端有它不会更新页面。

$.post(action, {

        name: $('#name').val(),
        email: $('#email').val(),
        phone: $('#phone').val(),
        comments: $('#comments').val()

    },

        function(data){

            document.getElementById('message').innerHTML = data;
            $('#message').fadeIn(200);
            $('.hide').hide(0);
            $('#submit').removeAttr('disabled');

            if (data != '') {
                $('.loader').css('visibility','hidden'); //hide the loader animation on error
}