как я могу проверить, содержит ли адрес электронной почты адрес gmail или yahoo? мне не нужно искать, является ли он реальным и активным, просто чтобы увидеть, распознано ли входное значение, что это его gmail или yahoo. я написал этот код, но он блокирует любое значение на входе и возвращает предупреждение:
const singupVlidation = ()=>{
let email = document.forms['customerinfo']['email'].value;
let gmail = '@gmail.';
let yahoo = '@yahoo.';
if (email.indexOf(gmail) == -1 || email.indexOf(yahoo) == -1 ){
alert('invalid Email address, please correct')
return false;
}
else if (true){
window.location.href = "singin.html";
return true;
}
}
вот html:
<form action = "/singup" name = "customerinfo" method = "post" onsubmit = "return singupVlidation()">
<input class = "inpt" type = "email" name = "email" placeholder = "Email">
<br>
<input type = "submit" value = "NEXT" class = "submit">
</form>
если я изменю код, чтобы он искал только "@", тогда он работает, что мне нужно изменить?
Логика вашего if
неверна. Вы используете ||
, что означает OR
, в то время как вы должны использовать &&
, что означает AND
.
Это потому, что то, что вы хотите сделать, переведено на английский язык:
Если письмо не содержит @gmail
И письмо не содержит @yahoo
, выдайте ошибку.
Поэтому измените свой код на
if (email.indexOf(gmail) == -1 && email.indexOf(yahoo) == -1 ){
Кроме того, то, как вы ищете @gmail.
, не является хорошим методом, так как вы можете столкнуться с поддельными доменами, такими как @gmail.myfakedomain.com
, и вы не рассматриваете .ymail.com
Возможно, вы могли бы быть более точным, используя полный список действительных доменов, например. отсюда, а затем точно сопоставьте домен вместо поиска строки с помощью indexOf
.
например
const singupVlidation = ()=>{
// Define list of valid domains as an array
let domain_list = ['gmail.com', 'googlemail.co.uk', 'ymail.com', 'yahoo.com', 'yahoo.it', '......etc'];
let email = document.forms['customerinfo']['email'].value;
// Extract full domain from the email address
let domain = email.substring(email.lastIndexOf("@") +1);
// Check if the domain is present in the array of valid domains
if (domain_list.includes(domain)) {
window.location.href = "singin.html";
return true;
} else {
alert('invalid Email address, please correct')
return false;
}
}
андреа спасибо большое! исправил за секунду