Nach XX Zeichen + 1

proloser

Erfahrenes Mitglied
Hallo,

ich hab ein textarea (var=text) und ein inputfeld (var=count).

Wenn ich in das textarea mehr als XX Zeichen eingib sollte er mir bei dem inputfeld "+ 1" dazu zählen.

Wie mach ich sowas, kenne mich in javascript leider nicht gut aus!

mfg proloser
 
Code:
function UpCount(textfield,xxZeichen) {
    if (textfield.value.length > xxZeichen) // prüft, ob der Text in deinem Textfeld länger ist als xx
        var countField = document.getElementbyId(/* id von deinem count-feld +/);
        var val = countField.value; // die aktuelle Value des Count Feldes
        if (val == '') // Wenn val leer ist auf 0 setzen... wir wollen ja zählen!
            val = 0;
        if (!isNaN(val)) { // Wenn val nicht leer war, noch prüfen, ob auch ein zahlenwert
            // und dann zahlenwert mit 1 addieren
            countField.value = val * 1 + 1; // das * 1 ist dazu da, dass auch wirklich mit einem
                                                        // Zahlenwert gerechnet wird!
        }
    }
}

und dann musst du in deinem Textfeld folgendes einbauen:
Code:
<input type="text" value="" onchange="UpCount(this,/* deine xxZeichen */);" />

Ich hoffe mal, das ... is nämlich schon etwas spät... bzw. früh am Tag! :suspekt:
 
Ich habs jetzt so probiert aber irrgend wie funktioniert es nicht!

PHP:
function UpCount(text,160) {
    if (text.value.length > 160)
        var count = document.getElementbyId(1);
        var val = count.value;
        if (val == '')
            val = 0;
        if (!isNaN(val)) { 
            count.value = val * 1 + 1;
        }
    }
}

und in dem inputfeld ...

PHP:
<input onchange="UpCount(this,160);" type="text" name="count" size="2" value="1">
 
Hallöchen zusammen,

ich hab grad mal was geschrieben. Wenn ich das richtig verstehe, dann soll in dem input-Feld immer um 1 erhöht werden, wenn du mehr als XX Zeichen im Textfeld eingegeben hast, richtig? Wenn an dem so ist, dann probier mal das aus:

JAVASCRIPT:
Code:
function upCount(objektOderID, anzahl) {
	var inhalt;
	var count;
	var obj = objektOderID;
	if(!obj.value) {
		obj = document.getElementById(objektOderID);
	}
	var count_obj = document.getElementById("counter");

	if(obj && count_obj) {
		inhalt = String(obj.value);
		if(inhalt.length > anzahl) {
			if(count_obj.value == "") count = 0;
			else count = parseInt(count_obj.value);
			count++;
			count_obj.value = String(count);
		}
	}
}

HTML:
Code:
<textarea id="mytext" rows="10" cols="40" onKeydown="upCount(this,20)"> test </textarea><br>
<br>
<input type="text" id="counter" size="10" value="">

Gruß, C]-[aoSlayeR
 
OK,

dann mach das so:
Code:
function upCount(objektOderID, anzahl) {
	var inhalt;
	var count;
	var obj = objektOderID;
	if(!obj.value) {
		obj = document.getElementById(objektOderID);
	}
	var count_obj = document.getElementById("counter");

	if(obj && count_obj) {
		inhalt = String(obj.value);
		if(inhalt.length == (anzahl+1)) {
			if(count_obj.value == "") count = 0;
			else count = parseInt(count_obj.value);
			
			count++;
			count_obj.value = String(count);
		}
	}
}

Gruß, C].[aoZ
 
Ja genau aber jetzt hab ich noch ein Problem.
Wenn ich wieder unter die XX Zeichen komme sollte er wieder -1 machen.

Ich brauch das für meinen SMS Service!

Es sollte ungefähr wie auf sms.at werden.


mfg proloser
 
OK, dann eben so... :-)

Code:
var prevCount = 0;

function upCount(objektOderID, anzahl) {
	var inhalt;
	var count;
	var obj = objektOderID;
	if(!obj.value) {
		obj = document.getElementById(objektOderID);
	}
	var count_obj = document.getElementById("counter");

	if(obj && count_obj) {
		inhalt = String(obj.value);
		if(prevCount == 0) prevCount = inhalt.length;
		if(count_obj.value == "") count = 0;
		else count = parseInt(count_obj.value);
		if((inhalt.length == (anzahl+1)) && (prevCount == anzahl)) {
			count++;
			count_obj.value = String(count);
		} else if((inhalt.length == (anzahl)) && (prevCount == (anzahl+1)) && (count > 0)) {
			count--;
			count_obj.value = String(count);
		}
		prevCount = inhalt.length;
	}
}

[EDIT]
Das was ich jetzt gemacht hab ist die Anzeige, ob zuviele Zeichen eingegeben wurden. Das Script auf sms.at zählt ja runter und setzt den Text bei über 160 Zeichen wieder auf 160 Zeichen zurück, dessen bist Du Dir bewußt, ja?
 
Zuletzt bearbeitet:
Jetzt funktioniert es aber wenn ich den Text lösche und von neu anfange bleibt zB die 2 stehen.

Er sollte aber wie auf 1 zurück.

[EDIT] Ja wenn du auf Superlange SMS klickst kommt das was du gerade geschrieben hast
 
Zuletzt bearbeitet:
also wenn in dem zweiten Feld stehen soll, wieviele SMS der Text benötigt, dann benutz mal folgendes Script:

Code:
function countSMS(objektOderID, anzahl) {
	var inhalt = "";
	var count;
	var obj = objektOderID;
	if(!obj.value) {
		obj = document.getElementById(objektOderID);
	}
	var count_obj = document.getElementById("counter");

	if(obj && count_obj) {
		window.status = "Length: " + (String(obj.value)).length + " obj.value? " + obj.value + "";
		inhalt = String(obj.value);
		if(!obj.value || !inhalt || (inhalt == null) || (inhalt == "")) {
			count = 0;
		} else {
			count = Math.ceil(inhalt.length / anzahl);
		}
		count_obj.value = String(count);
	}
}
 

Neue Beiträge

Zurück