Подтвердите форму с помощью Javascript, используя onsubmit - PullRequest
3 голосов
/ 04 марта 2010

У меня есть веб-сайт с существующей формой, который отправляет адрес электронной почты на веб-сайт третьей стороны (foo.com). Теперь я хотел бы проверить поле ввода электронной почты перед отправкой формы с использованием Javascript.

Мой Javascript

function isValidEmailAddress(emailAddress) {
    var pattern = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);
    return pattern.test(emailAddress);
}

function formCheck() {
    // Fetch email-value
  sEmail = document.myForm.recipientEmail.value ;
    // value empty?
    if (sEmail == 0)
        {
            alert('Enter Email-Address.');
            return false;
        }
    else
        {
            // value valid?
            if (!isValidEmailAddress(sEmail))
                {
                    alert('Enter valid Email-Address.');
                    return false;
                }
            else
                {
                    return true;
                }
        }
}   

Существующий тег формы

<form name="myForm" action="http://foo.com" method="post" onsubmit="return formCheck();">

Существующее поле ввода электронной почты

<input type="text" class="form-text" name="email" id="recipientEmail">

Существующий кнопка отправки

<input type="image" src="some_pic.gif" alt="OK" id="submit_form" onclick="document.onlineForm.submit();" value="send" name="submit_button"> 

Теперь, как только я нажимаю кнопку отправки, форма отправляется, и мой Javascript, похоже, игнорируется. Что я делаю не так?

1 Ответ

3 голосов
/ 04 марта 2010

Когда вы отправляете форму с помощью прямого вызова submit (), как это делает ваша кнопка, обработчик onsubmit не вызывается.

Вы можете заставить кнопку отправки вызывать другую функцию:

function doSubmit() {
  if (formCheck()) document.myForm.submit();
}
...