• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Text am Anfang eines Strings vergleichen

jeffglennfox

New member
Hallo,

ich möchte anhand einer eingebeben Telefonnummer erkennen, ob es sich um eine Mobilfunknummer handelt um dann entsprechende Zusatzoption anzubieten. Diese sollen durch einen sich öffenden DIV-Container angezeigt werden, sowie die Nummer als Mobilfunknummer erkannt wurde. Das Script sieht derzeit so aus:

Code:
function checkMobilePhone(id) {

if (document.getElementById(id).value.length < 5) {

var value = document.getElementById(id).value;

var country = document.getElementById(id+'-country');

country = country.options[country.selectedIndex].value;

switch (country) {

case 'BE': var prefix = ['046','047','048','049']; break;

case 'CH': prefix = ['075','076','077','078','079']; break;

case 'DE': prefix = ['0151','0152','0157','0159','0160','0162','0163','0170','0171','0172','0173','0174','0175','0176','0177','0178','0179']; break;

case 'DK': prefix = ['020','022','0251','0252','0253','0254','040','0601','0606','721','722','06091','06092','06093','06094','06095','06096']; break;

case 'FR': prefix = ['06','07']; break;

case 'GB': prefix = ['071','072','073','074','075','07624']; break;

case 'IT': prefix = ['32','33','34','360','361','362','363','364','365','366','367','368','38','90','391','392','393'];

case 'LI': prefix =  ['05','06','07']; break;

case 'LU': prefix = ['621','628','661','668','691','698']; break;

case 'NL': 

case 'AT': prefix = ['06'];  break;} 

if (prefix.indexOf(value) === 0) {
   
document.getElementById(id+'-additional-contact').style.display = 'block';

} else { document.getElementById(id+'-additional-contact').style.display = 'none'; }

}

}

Das Problem ist es, dass länderspezifisch die Vorwahlen nicht mal innerhalb eines Landes die gleiche Anzahl von Zeichen haben. Ich möchte aber erreichen, dass der DIV-Container geöffnet bleibt, wenn eine Mobilfunknummer erkannt wurde und sich nicht bei Eingabe weiterer Zeichen wieder schließt.

Über weitere Hilfe zu einem Lösungsansatz würde ich mich sehr freuen.

Gruss von Markus
 
Zuletzt bearbeitet:
Du kannst mit https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some durch alle Einträge in prefix durchiterieren und dann mit https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith (oder value.substr(0, entry.length) === entry) prüfen, ob das mit etwas anfangt:

Code:
if (prefix.some(function(entry){return value.startsWith(entry);})) {
- ungetestet.

PS: ich würde value am Anfang noch etwas aufräumen. Das Ganze soll ja auch angezeigt werden, wenn da irgendwo z.B. ein Leerzeichen drin ist.
 
Ich habe Deinen Vorschlag getestet und damit funktioniert es wie anvisiert. Vielen Dank !

Aufgrund Deines Hinweises habe ich unterhalb der dritten Zeile noch das ergänzt:

Code:
value = value.replace(/[/\-. ]/g,"");

so dass Leer- und telefonnummerntypische Trennzeichen gefiltert werden.

Ich wünsche schon mal ein schönes Weihnachtsfest !

Gruss von Markus
 
Zuletzt bearbeitet:
startsWith ist schneller (und kann weniger, da es ja nur am Anfang sucht) - v.a. wenn der Text, in dem gesucht werden soll, sehr lang ist.
 
Wird das nicht im Rahmen der neuen Verordnungen oder Drohungen der EU hinfällig?
Oder gehört das in die Sparte vorher erlauben lassen?
 
Zurück
Oben