Различная функция для успеха формы и для сообщений проверки формы - PullRequest
1 голос
/ 30 ноября 2011

Мне только что помогли с некоторыми функциями и обратными вызовами получить эту анимацию в моей форме после отправки:

            $("#message").show().delay(5000).fadeOut('fast', function(){
            $("#slide_panel").slideToggle("slow");
});

Хотя сейчас у меня проблема, если кто-то должен был отправить форму безпри вводе правильных данных, также появляется всплывающее сообщение об ошибке (всплывает в том же «сообщении» div, что и сообщение с благодарностью), задерживается на 5 секунд, а затем закрывает форму.

Конечно, я нене хочу, чтобы он закрывал форму, вместо этого покажите сообщение об ошибке в течение 5 секунд, а затем исчезните сообщение об ошибке.

Все, что мне нужно добавить сюда:

function(data){
            document.getElementById('message').innerHTML = data;
            $('#message').slideDown('slow');
            $('#contactform img.loader').fadeOut('fast',function()
{$(this).remove()});
            $('#submit').removeAttr('disabled');
            if(data.match('success') != null);
            $('#name').val( "" );
            $('#email').val( "" );
            $('#phone').val( "" );
            $('#dayin').val( "" );
            $('#dayout').val( "" );
            $('#comments').val( "" );
            $('#verify').val( "" );
            $("#message").show().delay(5000).fadeOut('fast', 
function(){
            $("#slide_panel").slideToggle("slow");
});

        }
    );

    });

    return false;

});

});

Я предполагаюМне нужно сделать что-то похожее на этот код:

if(data.match('success') != null);

В моей форме contact.php .... У меня есть это:

if (isset($_POST['verify'])) :
    $posted_verify   = $_POST['verify'];
    $posted_verify   = md5($posted_verify);
else :
    $posted_verify = '';
endif;

// Important Variables
$session_verify = $_SESSION['verify'];

if (empty($session_verify)) $session_verify = $_COOKIE['verify'];

$error = '';

    if(trim($name) == '') {
        $error .= '<li>Your name is required.</li>';
    }

    if(trim($email) == '') {
        $error .= '<li>Your e-mail address is required.</li>';
    } elseif(!isEmail($email)) {
        $error .= '<li>You have entered an invalid e-mail address.</li>';
    }

    if(trim($phone) == '') {
        $error .= '<li>Your phone number is required.</li>';
    } elseif(!is_numeric($phone)) {
        $error .= '<li>Your phone number can only contain digits.</li>';
    }

    if(trim($comments) == '') {
        $error .= '<li>You must enter a message to send.</li>';
    }

    if($session_verify != $posted_verify) {
        $error .= '<li>The verification code you entered is incorrect. 
</li>';
    }

    if($error != '') {
        echo '<div class="error_message">Attention! Please correct the  
errors below and try again.';
        echo '<ul class="error_messages">' . $error . '</ul>';
        echo '</div>';

    } else {

    if(get_magic_quotes_gpc()) { $comments = stripslashes($comments); }

Что-нибудь мне нужно сделать здесь?Или мне нужно только отредактировать файл javascript?

Ответы [ 2 ]

1 голос
/ 30 ноября 2011

У меня есть загруженные страницы регистрации и регистрации (zip-файл) по следующей ссылке: http://www.4shared.com/folder/uanQHCAg/_online.html

Он использует тот же div для отображения сообщений об успехе и ошибках.Вы можете попробовать и реализовать то, что вы ищете, с добавлением эффекта затухания.

1 голос
/ 30 ноября 2011

если вы используете JSON для вызова функции где-то в коде, вы сможете вернуть свойство статуса.

Я использовал это также в моем текущем проекте, и вот пример того, как я использовал это:

var link = '/brainbattleJSON/MarkAssignmentAsInProgress';
                $(this).hide();
                $.getJSON(link, { questionId: qId }, function (json) {
                   if(json.status == "ok"){
                   //do this
                   }else{
                   //do this
                   }

                });

Код:

// your function with validation
// if the form is valid make status "ok" otherwise put anything else
Return Json(New With {.status = "ok"});

Надеюсь, это поможет вам немного:)

Edit:

Вам нужно будет изменить значение ссылки var на путь вашей функции, где вы проверяете форму. Тогда где вы теперь говорите, если ваша ошибка! = '' Вы отправите обратно JSON. в этом вы скажете:

return json(new with{.status = 'error', .errors = 'yourErrors'})

Так что для ошибок может быть полезно отправить массив на тот случай, если вы получите более 1 ошибки в форме. Все сообщения больше не будут отображаться в php с echo, но вам придется помещать туда ошибки с помощью javascript.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...