• Basisthema
  • Tweede menu item
    • Sub menu item
Inloggen
Home » Initials Helper / Initialen splitsen met punt

Initials Helper / Initialen splitsen met punt

Initials Helper / Initialen splitsen met punt

JAVASCRIPT Code

javascript
function initialsHelper(element) {
  console.log(element);
  const initials = element ? document.getElementById(element) : document.getElementById("voorletters");
  const char = [
    "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m",
    "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z",
    "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M",
    "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"
  ];
  
  // Bijhouden van de vorige waarde om backspace/delete te detecteren
  let previousValue = '';
  let isBackspacing = false;

  // Directe key event listeners voor backspace/delete detectie
  initials?.addEventListener("keydown", (e) => {
    // Detecteer backspace (8) of delete (46) toetsen
    if (e.keyCode === 8 || e.keyCode === 46) {
      isBackspacing = true;
    }
  });

  initials?.addEventListener("keyup", (e) => {
    // Reset de backspace vlag na keyup
    if (e.keyCode === 8 || e.keyCode === 46) {
      isBackspacing = false;
    }
  });

  // Helper functie om initialen juist te formatteren
  const formatInitials = () => {
    // Als gebruiker aan het backspacen is, niets doen
    if (isBackspacing) {
      return;
    }

    // Als de waarde korter is geworden, waarschijnlijk door backspace
    if (initials.value.length < previousValue.length) {
      previousValue = initials.value;
      return;
    }
    
    // Verwijder dubbele punten (..)
    let value = initials.value.replace(/\.{2,}/g, '.');
    
    // Verwijder spaties
    value = value.replace(/\s/g, '');
    
    // Zorg ervoor dat elke letter wordt gevolgd door één punt
    let formatted = '';
    for (let i = 0; i < value.length; i++) {
      if (char.includes(value[i])) {
        // Als het een letter is, voeg hoofdletter toe
        formatted += value[i].toUpperCase();
        
        // Voeg een punt toe als het volgende karakter niet al een punt is
        if (i + 1 >= value.length || value[i + 1] !== '.') {
          formatted += '.';
        }
      } else if (value[i] === '.' && formatted.length > 0 && formatted[formatted.length - 1] !== '.') {
        // Voeg punt toe als laatste karakter nog geen punt is
        formatted += '.';
      }
    }
    
    // Update de waarde alleen als het echt veranderd is
    if (formatted !== initials.value) {
      initials.value = formatted;
    }
    
    previousValue = initials.value;
  };

  // Input event handler
  const handleInput = () => {
    // Wacht een kort moment voor het formatteren
    setTimeout(formatInitials, 10);
  };

  // Gebruik input event voor normale invoer
  initials?.addEventListener("input", handleInput);
  
  // Voor oudere browsers of specifieke apparaten
  initials?.addEventListener("change", handleInput);
  
  // Bewaar initiële waarde
  if (initials) {
    previousValue = initials.value;
  }
}
Bekijk Snippet

Door Gladior

  • Facebook
  • Linkedin
  • Mail
  • Instagram

Contact

service@gladior.com

Overige informatie

Basisthema voor WordPress