Почему .match () останавливает выполнение моего кода? - PullRequest
2 голосов
/ 02 мая 2011

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

Вот мой текущий код:

function validate(){
    var email = $('input.email').value;
    var emailRE = /^.*@.+\..{2,5}$/;
    if (email.match(emailRE)){
        alert("This is true");
    } else {
        alert("This isn't true.");
    }
    return false;
}

Когда я выполняю это, страница перезагружается и форма отправляется, и ни одно предупреждение не исчезает.Однако, когда я вынимаю весь раздел if, else, возвращается false;выполняется, и страница не перезагружается.Я также попытался удалить только .match (), и код выполнялся нормально.Так что же не так с частью .match (), которая вызывает его сбой?

Любая помощь очень ценится.Спасибо!

1 Ответ

4 голосов
/ 02 мая 2011

Вы должны использовать $('input.email').val() вместо $('input.email').value

http://jsfiddle.net/bMJH2/6/

value для объекта DOM.Но объект, с которым вы имеете дело, является объектом jQuery, поэтому правильный способ - использовать val().Если вы запустите его в Firefox / Firebug, используя value, он покажет ошибку:

email is undefined
[Break On This Error] if (email.match(emailRE)){ 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...