Отправка формы С помощью Jquery кнопка работает, но не при нажатии «enter» - PullRequest
1 голос
/ 19 апреля 2011

У меня есть немного jquery, который отправляет мне форму регистрации по электронной почте.Все работает нормально, когда пользователь нажимает кнопку, но когда нажимается ввод, кажется, что форма пытается передать через html, а не через jquery, и вы попадаете туда, где должна публиковаться форма.Я попытался использовать .submit вместо .click, но это не сработало

$('#email-signup-button').click(function () {
        var email = $('#email-address').val();

        // Check to see if field is blank
        if (email.length < 1) {
            errorLog += ('Please provide an email address.');
            errorCount++;
        }

        // If field is email address, check w/ regex
        if (email.match(emailRegex) == null) {
            if (errorCount == 0) {
                errorLog += ('Email address is invalid.\nPlease verify.');
                errorCount++;
            }
        }

        if (errorCount > 0) {
            alert(errorLog);
            errorCount = 0;
            errorLog = "";
        }
        else {
            $.post("/Home/AddEmail", { emailAddress: email });

            alert('Thank you for signing up!');
            $('#email-address').val("");
            $('#email-signup').hide();
            $('.lb_overlay').hide();
        }

        return false;
    });
}


        <div id="email-signup">
            <h2>
                Content Phrase
            </h2>
            <div class="email-deals-close-button">
            </div>
            <p>
                More Content</p>
            <form action="/Home/AddEmail" class="clearfix" method="post">
            <p class="sign-up">
                <label class="placeholder" for="email-address">
                    some@email.com</label>
                <input type="text" id="email-address" name="email-address" value="" />
            </p>
            <button id="email-signup-button" type="button" class="green-action-button">
                Submit</button>
            </form>
        </div>

Ответы [ 6 ]

4 голосов
/ 19 апреля 2011

Вы должны прикрепить к событию отправки самой формы, а не по нажатию кнопки.

 $("#formid").submit(//your function here);
2 голосов
/ 19 апреля 2011

Ваш тип кнопки установлен на кнопку. Если вы хотите привязать событие отправки, вам нужно, чтобы ваша кнопка была входной, а ее тип был type="submit".

1 голос
/ 19 апреля 2011

Является ли кнопка регистрации по электронной почте кнопкой отправки (т. Е. type="submit) для вашей формы?Если нет, то должно быть для этого работать.Если вы не хотите, чтобы это было, вы можете установить событие в окне ввода и ввести его для события нажатия этой кнопки:

 $(window).bind('keypress', function(e){
   if ( $( e.originalTarget ).is( ':input' ) && e.keyCode == 13 ) {
     $(#email-signup-button").click();
     e.preventDefault();
   }
 });

( источник кода )

Также следует обратить внимание на возможные ошибки конфликта имен, которые предположительно вызывают путаницу:

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

( jQuery docs )

В идеале найдите то, что заставляет submit не работать, и используйте это.

0 голосов
/ 19 апреля 2011

Сделайте это:

$("form").submit(function(e){
e.preventDefault();return false;
});
0 голосов
/ 19 апреля 2011

Вместо этого вы можете привязать событие отправки формы.

$('#myForm').submit(function(){ /* do stuff */ });
0 голосов
/ 19 апреля 2011

Предотвращение отправки:

$('#your_form_id').submit(function() {
  return false;
});
...