Мне пришлось нажимать кнопку «Отправить» несколько раз, чтобы заставить форму работать (результат загрузки во всплывающее окно) - PullRequest
0 голосов
/ 28 марта 2012

Проверка формы работает нормально, поэтому, если вы оставите поле ввода электронной почты пустым, а HIT отправит ОДИН РАЗ, он выдаст сообщение об ошибке.НО, когда вы заполняете поле электронной почты [input], мне нужно было нажать «submitBtn» ДВАЖДЫ, а иногда даже больше, чтобы фактически отобразить результат.

так вот сценарий:

$('#RetrieveQuote2').validate({
    rules: {
        email: {
            required: true,
            email: true
        }
    },
    errorPlacement: function(error, element) {
        error.insertBefore(element);
    },

    submitHandler: function() {
        $('input#submitBtn').bind('click', function() {
            var content = $("input#email").val();
            if (content == "abc@abc.com") {
                $('.quotenotfound').show();
                return false;
            } else {
                $('form#RetrieveQuote2').submit();

                formValidationSubmitted = true;

                if (!$('#RetrieveQuote2').valid()) {
                    $('.errorMessage').show();
                }

                $("input#submitBtn").colorbox({
                    href: function() {
                        var url = $(this).parents('form').attr('action');
                        var ser = $(this).parents('form').serialize(); //alert(url+'?'+ser);
                        return url + '?' + ser;
                    },
                    innerWidth: "780",
                    innerHeight: "450",
                    iframe: true
                });
            } // end of else
        });
    } // end of submitHandler
});

А ниже HTML-форма:

<form name="RetrieveQuote2" id="RetrieveQuote2" action="overlays/quotelist.php" method="get">
  <fieldset class="cf">
    <legend>email</legend>
    <label>Your Email</label>
    <input type="text" name="email" id="email" value="" maxlength="25"/>
    <div class="submit">
      <input type="submit" name="RetrieveQuote" class="rqSubmitBtn" id="submitBtn" value="SUBMIT" />
    </div>
  </fieldset>
</form>

1 Ответ

1 голос
/ 28 марта 2012

Проблема в том, что вы пытаетесь добавить обработчик к кнопке отправки внутри вашего обработчика отправки.

Итак, при первом щелчке вызывается обработчик проверки (из обработчика щелчков, который он добавляет автоматически), а затем ваш обработчик щелчков добавляется, но не запускается. При втором щелчке вы добавляете еще один обработчик щелчков, а затем вызывается тот, который вы добавили в первый раз.

Плагин validate должен автоматически добавить обработчик для вас.

Удалите $('input#submitBtn').bind('click', function() { вокруг содержимого вашего обработчика отправки.

Вам также не нужен $('form#RetrieveQuote2').submit(); Это также произойдет автоматически после обработчика отправки.

Демо: http://jsfiddle.net/asrfV/

...