2016-03-17 2 views
0

Я делаю простую форму, которая берет значение из текстового ввода, проверяет, есть ли все символы, которые находятся в адресе электронной почты, и возвращает true или false. Согласно множеству разных ресурсов, если он возвращает false, форма не должна быть отправлена. Однако, когда я тестирую его в JS bin, он отправляет его. Вот код:Невозможно остановить форму от отправки при проверке электронной почты

function validateEmail(x) { 
 
    console.log(x); 
 
    var email = x.myText.value; 
 
    console.log(email); 
 
    var re = /^(([^<>()\[\]\\.,;:\[email protected]"]+(\.[^<>()\[\]\\.,;:\[email protected]"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; 
 
    console.log(re.test(email)); 
 
}
<form name="myForm" onsubmit="return validateEmail(this)"> 
 
    <input name="myText" type="text"> 
 
    <input type="submit" value="Submit"> 
 
</form>

ответ

3

вам нужно возвратить ложь, если проверка не удается, так просто заменить

console.log(re.test(email)); 

с

return re.test(email); 

Demo

+0

@goldpotatos это делает https://jsfiddle.net/gurvinder372/jmgo8ya2/ – gurvinder372

0

Попробуйте это:

function validateEmail(x) { 
    console.log(x); 
    var email = x.myText.value; 
    console.log(email); 
    var re = /^(([^<>()\[\]\\.,;:\[email protected]"]+(\.[^<>()\[\]\\.,;:\[email protected]"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; 
    return re.test(email); 
} 
0

Изменить<form name="myForm" onsubmit="return validateEmail(this)">

С этой<form name="myForm" onClick="return validateEmail(this)">

И функция как этот

function validateEmail(x) { console.log(x); var email = x.myText.value; console.log(email); var re = your regular expression; if((re.test(email)){ document.getElementById(myForm).submit(); }

Смежные вопросы