Ограничить количество символа JS

77
20 марта 2022, 16:30

let email = document.getElementById('email'); 
let btn = document.getElementById('btn'); 
 
let emailCheck1 = function() { 
  if (email5.value.indexOf('@', 0) < 1) { 
    console.log('good'); 
  } else { 
    console.log('wrong'); 
  } 
} 
emailCheck1()
<input type="email" id="email" placeholder="Email"> 
<input type="button" value="register" id="btn">

Задача: нужно сделать валидацию поля не используя регулярные выражения. Валидация заключается в том чтобы можно было ставить @ только 1 раз и при нажатии на кнопку все это дело проверять.

Answer 1

let email = document.getElementById('email'); 
let btn = document.getElementById('btn'); 
 
let emailCheck1 = function() { 
  var count = 0; 
  for (var i = 0; i < email.value.length; i++) { 
    if (email.value[i] == '@') 
      count++; 
    if (count > 1) { 
      console.log('wrong'); 
      return; 
    } 
  } 
  console.log('good'); 
} 
 
email.onkeypress = function(e) { 
  if (e.key == '@') { 
    if (this.value.indexOf('@') != -1) { 
      e.preventDefault(); 
    } 
  } 
}
<input type="email" id="email" placeholder="Email"> 
<input type="button" value="register" id="btn" onclick="emailCheck1()">

Answer 2

Я исхожу из того, что нам нужно посчитать собак. Если одна, то строка поделится сплитом на 2. Если собак больше, то на 3 и более. Если поделенная сплитом строка 2 или меньше, то ок. Но тут, имхо, в этом варианте надо всё-таки не больше 2 проверять, а равно 2. Т.е. это имейл, и @ там должна быть в любом случае. Но всё-таки лучше регуляркой. На всякий случай тут её оставлю.

let mailReg = /^[\w\-\!\#\$\%\^\&\*\.]+[^\.-]@([\w\-]+\.+)+([A-Za-z]+)$/;

let email = document.getElementById('email'); 
let btn = document.getElementById('btn'); 
 
let emailCheck1 = function() { 
  let symbs = email.value.split('@'); 
  if(symbs.length !== 2) { 
    console.log('bad') 
  } else { 
    console.log('ok'); 
  } 
   
} 
 
btn.addEventListener('click', emailCheck1);
<input type="email" id="email" placeholder="Email"> 
<input type="button" value="register" id="btn">

READ ALSO
Google charts с видоискателем

Google charts с видоискателем

Подскажите, как построить с помощью Google charts график из видоискателем по времени типа http://nvd3org/examples/lineWithFocus

59
Proxy для вложенных объектов

Proxy для вложенных объектов

Всем привет! Я относительно недавно пришёл в JS и время от времени люблю создавать свои велосипеды чтобы понять лучше сам язык и реализацию...

215
Якори и fullPage.js

Якори и fullPage.js

В общем задача такая, у меня есть макет, на котором нужно реализовать плагин fullPage, также там на главной странице имеются несколько якорей,...

62
Как вызвать функцию в функции?

Как вызвать функцию в функции?

Я пытаюсь решить следующую задачу:

78