AJAX и JQuery вопрос Validate

голоса
0

Так что я застрял в этом тупике. У меня есть AJAX скрипт и JQuery Validation плагин. С помощью этого скрипта, когда моя страница загружается пустая форма контакта автоматически подает на себя. Если переместить или добавить $('#submit').click(function () {через AJAX скрипт часть, прямо под $(document).ready(function() {затем представить его игнорирует мою форму проверки.

Любая помощь будет оценена.

<script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js'></script>
<script type='text/javascript' src='http://ajax.aspnetcdn.com/ajax/jquery.validate/1.9/jquery.validate.min.js'></script>
<script>
    var captcha_a = Math.ceil(Math.random() * 10);
    var captcha_b = Math.ceil(Math.random() * 10);
    var captcha_c = captcha_a + captcha_b;

    function generate_captcha(id){
        var id = (id) ? id : 'lcaptcha';
        $(#+id).html(captcha_a +  +  + captcha_b +  = );
    }

    $(document).ready(function() {

        $('#submit').click(function () {

            jQuery.validator.addMethod(math,
                function(value, element, params) { return this.optional(element) || value == params[0] + params[1]; },
                jQuery.format(Please enter the correct value for {0} + {1})
            );

            $(#commentform).validate({
                rules: {
                    captcha: {
                        math: [captcha_a, captcha_b]
                    }
                }
            });

        });

    })
</script>

<script>
    $(document).ready(function() {

        var name = $('input[name=name]');
        var phone = $('input[name=phone]');
        var email = $('input[name=email]');
        var reason = $('select[name=reason]');
        var info = $('textarea[name=info]');

        var data = 'name=' + name.val() + '&phone=' + phone.val() + '&email=' + email.val() +'&reason=' + reason.val() + '&info='  + encodeURIComponent(info.val());

        $('.loading').show();

        $.ajax({
            url: ajaxformtoemail.php,
            type: GET,
            data: data, 
            cache: false,
            success: function (html) {  
                if (html==1) {
                    $('.form').fadeOut('slow'); 
                    $('.done').fadeIn('slow');
                } else alert('Sorry, unexpected error. Please try again later.');
            }
         });
         return false;
    });
</script>
Задан 27/02/2012 в 04:20
пользователем
На других языках...                            


1 ответов

голоса
1

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

Ниже приведен пример надлежащего осуществления санкционирования Plugin. И вам не нужно ставить validate()внутри обработчика щелчка. Плагин Validation имеет кучу своих собственных обработчиков , построенные в том числе , submitHandlerчто пожары , когда форма проходит проверку.

<script type='text/javascript'>

$(document).ready(function() {

    jQuery.validator.addMethod("math",
        function(value, element, params) { return this.optional(element) || value == params[0] + params[1]; },
        jQuery.format("Please enter the correct value for {0} + {1}")
    );

    $('form').validate({
        rules {
            // your rules
        },
        submitHandler: function(form) {
            $.ajax({
                // your ajax parameters
            });         
            return false;
        }
    });

});

</script>

Validation Plugin Документация

Некоторые побочные вопросы ...

  1. Ваш код будет гораздо легче читать и устранение неполадок, если вы использовали правильный отступ и стандартное форматирование.

  2. Там не нужно использовать дублирующие document.readyфункции. Все может быть в одном.

  3. Как и в # 2, вам не нужны отдельные наборы <script></script>тегов содержат код. Все может быть заключен один раз.

Ответил 27/02/2012 в 04:30
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more