Κώδικας μέτρησης χαρακτήρων

Κώδικας, πληροφορίες, ερωτήσεις και απαντήσεις σχετικές με την JavaScript.

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

Κώδικας μέτρησης χαρακτήρων

Δημοσίευση από cherouvim » 07 Απρ 2006 00:32

Κώδικας: Επιλογή όλων

window.onload=init;

function init() {
	if(document.getElementById && document.createTextNode) {
		var forms = document.getElementsByTagName('form');
		for&#40;var i=0, length=forms.length; i<length; i++&#41; &#123;
			if &#40;forms&#91;i&#93;.className=='count'&#41; &#123;
				var textarea = forms&#91;i&#93;.getElementsByTagName&#40;'textarea'&#41;;
				if &#40;textarea&#91;0&#93;&#41; &#123;
					doCount&#40;textarea&#91;0&#93;&#41;;
					textarea&#91;0&#93;.onkeyup=function&#40;&#41; &#123;
						doCount&#40;this&#41;;
					&#125;
				&#125;
			&#125;
		&#125;
	&#125;
&#125;

function doCount&#40;textarea&#41; &#123;
	var inputs = textarea.parentNode.getElementsByTagName&#40;'input'&#41;;
	for&#40;var j=0, lengthj=inputs.length; j<lengthj; j++&#41; &#123;
		if &#40;inputs&#91;j&#93;.className=='count'&#41; &#123;
			inputs&#91;j&#93;.value=textarea.value.length;
		&#125;
	&#125;
&#125;

Κώδικας: Επιλογή όλων

	<form method='get' class='count'>
		<textarea>Type here...</textarea>
		<label>Sum&#58;</label><input type='text' disabled='disabled' class='count' value=''/><br/>
		<input type='submit'/>
	</form>
live demo @ http://temp.cherouvim.com/forums/textar ... rs-counter

panosru
WebDev Moderator
Δημοσιεύσεις: 1885
Εγγραφή: 13 Σεπ 2005 16:13
Τοποθεσία: Camp

Κώδικας μέτρησης χαρακτήρων

Δημοσίευση από panosru » 07 Απρ 2006 00:54

Κώδικας: Επιλογή όλων

<script language="javascript" type="text/javascript">
<!--
function countCharacters &#40;myTextareaID,mySpanID&#41;
&#123;
	document.getElementById&#40;mySpanID&#41;.innerHTML = document.getElementById&#40;myTextareaID&#41;.value.length;
&#125;
//-->
</script> 
<?php
for&#40;$i = 1; $i < 30; $i++&#41;
&#123;
	echo "<textarea class=\"normal\" rows=\"12\" ".
		 "onkeyup=\"countCharacters&#40;'article&#123;$i&#125;','txtmsg&#123;$i&#125;'&#41;\" ".
		 "onkeydown=\"countCharacters&#40;'article&#123;$i&#125;','txtmsg&#123;$i&#125;'&#41;\" ".
		 "cols=\"125\" name=\"article&#123;$i&#125;\" id=\"article&#123;$i&#125;\"></textarea>".
   		 "<span id=\"txtmsg&#123;$i&#125;\" class=\"normal\"></span>\n";
&#125; 
?>

panosru
WebDev Moderator
Δημοσιεύσεις: 1885
Εγγραφή: 13 Σεπ 2005 16:13
Τοποθεσία: Camp

Κώδικας μέτρησης χαρακτήρων

Δημοσίευση από panosru » 07 Απρ 2006 00:54

opa me prolabe o cherouvim

Άβαταρ μέλους
panos78
Δημοσιεύσεις: 535
Εγγραφή: 15 Φεβ 2003 02:14
Τοποθεσία: Θεσσαλονικη
Επικοινωνία:

Κώδικας μέτρησης χαρακτήρων

Δημοσίευση από panos78 » 07 Απρ 2006 01:04

Σας ευχαριστώ και τους δύο!:)
Τα παιδιά του Freestuff πάλι έγγραψαν.
Εν οίδα ότι ουδέν οίδα.
Η Μακεδονία είναι Ελλάδα.
Εικόνα

Άβαταρ μέλους
skeftomilos
Script Master
Δημοσιεύσεις: 2888
Εγγραφή: 07 Ιαν 2005 07:22
Τοποθεσία: Αθήνα

Κώδικας μέτρησης χαρακτήρων

Δημοσίευση από skeftomilos » 07 Απρ 2006 22:53

Δύο εντελώς διαφορετικές προσεγγίσεις (αλλά εξίσου αποτελεσματικές)! :D
The pure and simple truth is rarely pure and never simple. Ο μη νους δε σκέπτεται μη σκέψεις για το τίποτα.

Άβαταρ μέλους
panos78
Δημοσιεύσεις: 535
Εγγραφή: 15 Φεβ 2003 02:14
Τοποθεσία: Θεσσαλονικη
Επικοινωνία:

Κώδικας μέτρησης χαρακτήρων

Δημοσίευση από panos78 » 07 Απρ 2006 23:35

Μάλλον το Freestuff είναι αποτελεσμάτικό!!!;)
Για να έχεις την μέγιστη απόδοση θέλει και το κατάλληλο περιβάλλον.
Χρησιμοποίησα τελικά τον κώδικα του panosru αφού μου τον βελτίωσε αρκετά. Έβαλα και εγώ λιγάκι το χεράκι μου και τον έκανα κάπως έτσι:

Κώδικας: Επιλογή όλων

<script language="javascript" type="text/javascript">
window.onload = init;
function init &#40;&#41;
&#123;
	txtLoader &#40;&#41;;
&#125;
function txtLoader &#40;&#41;
&#123;
	var mySpans = document.getElementsByTagName&#40;'span'&#41;;
	
	for &#40;i = 0; i < mySpans.length; i++&#41;
	&#123;
		if &#40;mySpans&#91;i&#93;.id.indexOf&#40;'txtmsg'&#41; == 0&#41;
		&#123;
			mySpans&#91;i&#93;.innerHTML = '<b><font color="red">0</font> χαρακτήρες</b>';
		&#125;
	&#125;
&#125;
function countCharacters &#40;myTextareaID,mySpanID&#41;
&#123;
	myTextarea = document.getElementById&#40;myTextareaID&#41;;
	mySpan = document.getElementById&#40;mySpanID&#41;;
	
	myCounterTxt = &#40;myTextarea.value.length == 1&#41; ? 'ας' &#58; 'ες';
	
	mySpan.innerHTML = '<b><font color="red">' + myTextarea.value.length + '</font> χαρακτήρ' + myCounterTxt + '</b>';
&#125;
</script>
<?php
for&#40;$i = 1; $i < 10; $i++&#41;
&#123;	
echo "<textarea class=\"normal\" rows=\"12\"
onfocus=\"countCharacters&#40;'article&#123;$i&#125;','txtmsg&#123;$i&#125;'&#41;\" 
onkeyup=\"countCharacters&#40;'article&#123;$i&#125;','txtmsg&#123;$i&#125;'&#41;\"
onkeydown=\"countCharacters&#40;'article&#123;$i&#125;','txtmsg&#123;$i&#125;'&#41;\" cols=\"125\" name=\"article&#123;$i&#125;\" id=\"article&#123;$i&#125;\"></textarea><span id=\"txtmsg&#123;$i&#125;\"></span>";
&#125;
?>
Ωστόσο έχει ένα μικρό προβληματάκι.
Αν τυχόν μέσα στην textarea υπάρχει ήδη κείμενο με το που φωρτώνει η σελίδα, πρέπει να επιλέξω την textarea για να λειτουργήσει ο μετρητής.
Υπάρχει τρόπος να λειτουργήσει η διαδικασία και με το που φορτώνει η σελίδα;
Σημείωση: Ο διακόπτης onLoad δεν λειτουργεί με την ετικέτα textarea!
Εν οίδα ότι ουδέν οίδα.
Η Μακεδονία είναι Ελλάδα.
Εικόνα

Άβαταρ μέλους
skeftomilos
Script Master
Δημοσιεύσεις: 2888
Εγγραφή: 07 Ιαν 2005 07:22
Τοποθεσία: Αθήνα

Κώδικας μέτρησης χαρακτήρων

Δημοσίευση από skeftomilos » 08 Απρ 2006 00:55

onload έχουν μόνο τα window, frameset, frame/iframe και image. Το μήκος του αρχικού κειμένου θα μπορούσε να υπολογιστεί server-side και να τοποθετηθεί μέσα στο span.

Κώδικας: Επιλογή όλων

...<span id=\"txtmsg&#123;$i&#125;\">" . strlen&#40;$str&#41; . "</span>...
The pure and simple truth is rarely pure and never simple. Ο μη νους δε σκέπτεται μη σκέψεις για το τίποτα.

Άβαταρ μέλους
panos78
Δημοσιεύσεις: 535
Εγγραφή: 15 Φεβ 2003 02:14
Τοποθεσία: Θεσσαλονικη
Επικοινωνία:

Κώδικας μέτρησης χαρακτήρων

Δημοσίευση από panos78 » 08 Απρ 2006 01:36

Το κείμενο έχει τη μεταβλητή $arthro_array[2]
και έκανα τον κώδικα κάπως έτσι:
echo "<span id=\"txtmsg[$z]\">".strlen($arthro_array[2])."</span>";
αλλά δεν λειτουργεί!
:)
Εν οίδα ότι ουδέν οίδα.
Η Μακεδονία είναι Ελλάδα.
Εικόνα

Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

Κώδικας μέτρησης χαρακτήρων

Δημοσίευση από cherouvim » 08 Απρ 2006 09:55

Me to na ektyposeis to string length sto server side exeis aplosei to logic sou se 2 diaforetika domains. Kalo einai na yparxei separation kai na min denontai ta systimata toso.

Άβαταρ μέλους
panos78
Δημοσιεύσεις: 535
Εγγραφή: 15 Φεβ 2003 02:14
Τοποθεσία: Θεσσαλονικη
Επικοινωνία:

Κώδικας μέτρησης χαρακτήρων

Δημοσίευση από panos78 » 08 Απρ 2006 14:39

Μπορείς να γίνεις λιγάκι πιο σαφής;
:)
Εν οίδα ότι ουδέν οίδα.
Η Μακεδονία είναι Ελλάδα.
Εικόνα

Άβαταρ μέλους
skeftomilos
Script Master
Δημοσιεύσεις: 2888
Εγγραφή: 07 Ιαν 2005 07:22
Τοποθεσία: Αθήνα

Κώδικας μέτρησης χαρακτήρων

Δημοσίευση από skeftomilos » 09 Απρ 2006 01:22

Ο Cherouvim εννοεί ότι καλό θα είναι να μην ανακατευτεί server-side κώδικας από τη στιγμή που για τη μέτρηση των χαρακτήρων η δουλειά μπορεί να γίνει αποκλειστικά client-side, κι έχει δίκιο φυσικά. Μόνο που στη συγκεκριμένη περίπτωση είναι τόσο προκλητικά εύκολο να προστεθεί το αρχικό μέγεθος με PHP που είναι δύσκολο κάποιος να αντισταθεί στον πειρασμό. :) Φαντάσου όμως ότι άυριο αλλάζεις γνώμη για τη μορφοποίηση του αριθμού, π.χ. να υπάρχει τελεία ανά τρία ψηφία για το χωρισμό των χιλιάδων. Η αλλαγή θα πρέπει να γίνει σε δύο διαφορετικά σημεία, με δύο διαφορετικές γλώσσες.

Γενικά η συνεργασία server και client κώδικα δεν είναι κακό πράγμα, αρκεί να υπάρχουν ξεκάθαροι ρόλοι και να μην ανακατεύεται ο ένας κώδικας στη δουλειά του άλλου. Η τεχνολογία AJAX είναι ένα χαρακτηριστικό παράδειγμα επιτυχημένης συνεργασίας server-client.
The pure and simple truth is rarely pure and never simple. Ο μη νους δε σκέπτεται μη σκέψεις για το τίποτα.

Άβαταρ μέλους
panos78
Δημοσιεύσεις: 535
Εγγραφή: 15 Φεβ 2003 02:14
Τοποθεσία: Θεσσαλονικη
Επικοινωνία:

Κώδικας μέτρησης χαρακτήρων

Δημοσίευση από panos78 » 09 Απρ 2006 01:24

Kατανοητό.
Αλλά όπως είπα και πιο πριν αυτό που πρότεινες δεν λειτουργεί.
:)
Εν οίδα ότι ουδέν οίδα.
Η Μακεδονία είναι Ελλάδα.
Εικόνα

Απάντηση

Επιστροφή στο “JavaScript και Frameworks”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες