Anzeige der Anzahl von Zeichen in Eingabefeld + wenn Sonderz. dann 2 Zeichen zählen

dwex

Erfahrenes Mitglied
Hallo Leute,

habe folgende Funktion:
Code:
function CheckLen(Target) {

if (window.document.sendit.textarea.value.length>1530)
        {
window.document.sendit.textarea.value=formfeld;
return;
        }
else
        {
formfeld=window.document.sendit.textarea.value;
window.document.sendit.Anzahl.value=window.document.sendit.textarea.value.length;
        }

 StrLen = Target.value.length

 if (StrLen<=160) {
 document.sendit.SMS_Zahl.value= 1 }
 else {
 zahl = Math.ceil(document.sendit.Anzahl.value/153)
 document.sendit.SMS_Zahl.value=zahl }
 OldText = Target.value

}

Jetzt würde ich aber gerne der Anzahl sagen, wenn ein Sonderzeichen eingegeben wird das es statt 1 jetzt 2 Zeichen dafür zählen soll.

Habt Ihr eine Idee wie man sowas machen könnte?
Vielen Dank für eure Hilfe im voraus!
 
Oder: Was sind keine Sonderzeichen? Denn dann könntest du Folgendes verwenden:
Code:
element.value.length + element.value.replace(/[^…]/g, "").length
 
Hi Sven,

es geht um Sonderzeichen die wohl nur im deutschen Zeichensatz vorkommen.
Genau weis ich das auch nicht - es geht um SMS-Versand

Hi Gumbo,

wie muss ich das verstehen - bzw. einbauen - weist ja JavaScript und ich sind große Feinde.
 
element ersetzt du durch dein Element, dessen Wertzeichen gezählt werden. Und das ersetzt du durch einen Ausdruck, der die Nicht-Sonderzeichen beschreibt (etwa „a-zA-Z0-9,;.:\-!?\ “).
 
Servus Gumbo,

ich hab das jetzt mal so eingebaut:
Code:
function CheckLen(Target) {

if (window.document.sendit.textarea.value.length>1530)
        {
window.document.sendit.textarea.value=formfeld;
return;
        }
else
        {
formfeld=window.document.sendit.textarea.value;
window.document.sendit.Anzahl.value=window.document.sendit.textarea.value.length;
        }

 StrLen = Target.value.length + Target.value.replace(/[^a-zA-Z0-9,;.:\-!?\ ]/g, "").length

 if (StrLen<=160) {
 document.sendit.SMS_Zahl.value= 1 }
 else {
 zahl = Math.ceil(document.sendit.Anzahl.value/153)
 document.sendit.SMS_Zahl.value=zahl }
 OldText = Target.value

}
Demnach müsste ja z.B. das Zeichen & wie 2 Zeichen gezählt werden.
Dies ist aber nicht der Fall.
Hab ich was falsch gemacht?

Ausserdem habe ich jetzt herausgefunden was alles als Sonderzeichen gilt es sind folgende Zeichen:
Form feed (also Zeilenumbruch), ^ - Caret / Circumflex, { - Left curly bracket, } - Right curly bracket, \ - Backslash, [ - Left square bracket, ~ - Tilde, ] - Right square bracket, | - Vertical bar, € - Euro sign

Glaube also man sollte vielleicht die Regex so schreiben, dass nur für diese Zeichen einfach 2 gezählt wird - aber wie du weist lieber Gumbo JavaScript und RegEx meine beiden Lieblingsthemen.

Vielen Dank für die Hilfe und Geduld!
Hast eine Idee?
 
Zuletzt bearbeitet:
Servus Gumbo,

ist steh mal wieder gehörig auf dem Schlauch.

Ich hatte vorher im Quelltext (siehe ganz oben)
Code:
StrLen = Target.value.length
stehen und hab das dann getauscht.

Warum funktioniert das dann im ursprünglichen Quelltext mit Target?
 

Neue Beiträge

Zurück