login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Smiley's meetellen in maxvalue teller

Offline Dark_Paul - 14/06/2006 19:46
Avatar van Dark_PaulPHP ver gevorderde Ik heb via javascript.internet.com een script gevonden waarmee ik een maximale lengte voor een invoerveld kan instellen. Er zit ook een teller bij. Als ik een smiley invoer, wordt die wel meegeteld als field.length, maar wordt de teller niet 'upgedate'. als je bijv. volgens de teller nog 800 tekens mag, je voegt een smiley in van 4tekens lang, mag je in het veld nog maar 769tekens invoeren. Toch geeft de teller nog steeds aan dat je nog 800 tekens mag invoeren. Hoe los ik dit op?
De functie in head-tags:
  1. <SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
  2. function textCounter(field, countfield, maxlimit) {
  3. if (field.value.length > maxlimit) // if too long...trim it!
  4. field.value = field.value.substring(0, maxlimit);
  5. // otherwise, update 'characters left' counter
  6. else
  7. countfield.value = maxlimit - field.value.length;
  8. }
  9. </SCRIPT>

de textarea waar de functie op werkt:
  1. <TEXTAREA NAME="Message" COLS="40" ROWS="8" CLASS="inputbox" onKeyDown="textCounter(this.form.Message,this.form.chars,1000);" onKeyUp="textCounter(this.form.Message,this.form.chars,1000);"></TEXTAREA>

het invoegen van een smiley:
  1. <A HREF="javascript:Smiley();" onClick="javascript:Insert(' >:O ');"><IMG SRC="images/smile/angry.gif" HEIGHT="16px" BORDER="0px"></A>

als laatste, het veld met de 'teller':
  1. <INPUT READONLY TYPE="text" NAME="chars" SIZE="4" VALUE="1000" CLASS="inputbox"> characters left

10 antwoorden

Gesponsorde links
Offline MindPrison - 14/06/2006 21:26
Avatar van MindPrison PHP gevorderde
  1. <A HREF="javascript:Smiley(); textCounter(this.form.Message,this.form.chars,1000);" onClick="javascript:Insert(' >:O ');"><IMG SRC="images/smile/angry.gif" HEIGHT="16px" BORDER="0px"></A>


Misschien dit eens veranderen?
Offline BigBug - 14/06/2006 22:08
Avatar van BigBug PHP expert
Citaat:
Ik heb via javascript.internet.com een script gevonden waarmee ik een maximale lengte voor een invoerveld kan instellen.
Als je iets vindt -> Omdat je ernaar zoekt heb je er vaak geen verstand van.. Een handige opmerking zou in dit geval handig zijn. Vooral omdat hij waarschijnlijk geen Javascript beheerst. Aan:
Citaat:
Misschien dit eens veranderen?
Heeft hij dus helemaal niks.. Behalve dat hij weet dat er daaraan moet worden veranderd.
Offline Dark_Paul - 15/06/2006 09:33
Avatar van Dark_Paul PHP ver gevorderde ik snap op zich wel wat er in het script gebeurt. Ik had al zoiets bedacht, ik dacht ook al dat er zon stukje in de tag van de smiley moest, maar ik had geen idee hoe ik dit erin zou moeten zetten. Mijn kennis van JavaScript is gewoon niet goed genoeg om zoiets zelf te kunnen scripten..
Offline marten - 15/06/2006 09:39
Avatar van marten Beheerder Je kan beter met je smilies de kant van php op gaan. Hiermee kan je gewoon platte tekst in je veld zetten voor een smilie zoals hier zeg maar als je ;) ofzo doet 

Als je je tekst dan weergeeft op je scherm zet je al je commando's om naar een image. Snap je wat ik bedoel?

Zo werkt je teller gewoon want het is gewoon een teken.
Offline Dark_Paul - 15/06/2006 09:50
Avatar van Dark_Paul PHP ver gevorderde @marten: Er wordt nu met behulp van het JavaScript ook platte tekst ingevoegd (voorbeeld: http://site.whiy-online.com/guestbook.php)
maar het is ook handig als de smileys eronder staan. Omdat niet iedereen alle codes uit z'n hoofd weet. Vervolgens wordt in het PHP-bestand de platte tekst van de smileys vervangen door een <IMG>-tag.
Offline marten - 15/06/2006 09:52
Avatar van marten Beheerder Ik zie dat hij het daar ook niet doet.....

Je moet eerst een spatie geven voordat hij de smilie meegeeft ;) Probeer dat bij jou script eens
Offline BramBo - 15/06/2006 10:55 (laatste wijziging 15/06/2006 10:55)
Avatar van BramBo JS gevorderde Ik zie in je broncode dat je een aantal scripts lost gebruikt, dit kan je gewoon in één script element plaatsen.

Waarom gebruik je verder niet meer globalen ?

dus boven je functies :
  1. var countfield = document.forms[0].chars;
  2. var maxlimit = 1000;
  3. var field = document.forms[0].Message;

etc.

  1. function Insert() {
  2. /* functie code.... */
  3.  
  4. textCounter();
  5. }

Ten eerste hoef je ze dan niet mee te sturen in je onclick events. en ten tweede heb je ze dan in iedere functie tot je beschikking.

ik zou de smiley functie gewoon aanpassen(nadat je de variabelen heb gedifiniëerd als hierboven.)
Offline Dark_Paul - 15/06/2006 13:20 (laatste wijziging 15/06/2006 20:42)
Avatar van Dark_Paul PHP ver gevorderde @marten: dat gebeurt al. elke smiley heeft als code spatiecodespatie, dus bijv. (' :@ ')

@BramBo: ik snap niet precies wat je bedoeld.. zoiets:
  1. <SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
  2.  
  3. var countfield = document.forms[Guestbook].chars;
  4. var maxlimit = 1000;
  5. var field = document.forms[Guestbook].Message;
  6.  
  7. function textCounter()
  8. {
  9. if (field.value.length > maxlimit) // if too long...trim it!
  10. field.value = field.value.substring(0, maxlimit);
  11. // otherwise, update 'characters left' counter
  12. else
  13. countfield.value = maxlimit - field.value.length;
  14. }
  15.  
  16. function Smiley()
  17. {
  18. return;
  19. }
  20. function Insert(Smiley)
  21. {
  22. var Edit;
  23. var ThisText = document.Guestbook.Message;
  24. ThisText.value = ThisText.value + Smiley + " ";
  25. textCounter();
  26. ThisText.focus();
  27. return;
  28. }
  29. </SCRIPT>

want ik krijg 't nog niet werkend.. :S

Laat maar, met wat puzzelen heb ik 't aan de gang gekregen dankje!
Offline marten - 15/06/2006 20:49
Avatar van marten Beheerder oplossing graag
Offline Dark_Paul - 15/06/2006 21:19 (laatste wijziging 15/06/2006 21:19)
Avatar van Dark_Paul PHP ver gevorderde owjah, sorry, vergeten ><
de functie:
  1. function textCounter(field, countfield, maxlimit)
  2. {
  3. var field = document.Guestbook.Message;
  4. var countfield = document.Guestbook.chars;
  5. var maxlimit = 1000;
  6. if (field.value.length > maxlimit) // if too long...trim it!
  7. field.value = field.value.substring(0, maxlimit);
  8. // otherwise, update 'characters left' counter
  9. else
  10. countfield.value = maxlimit - field.value.length;
  11. }

de Insert-functie voor de smileys is hetzelfde gebleven, alleen heb ik er textCounter(); aan toegevoegd:
  1. function Insert(Smiley)
  2. {
  3. var Edit;
  4. var ThisText = document.Guestbook.Message;
  5. ThisText.value = ThisText.value + Smiley + " ";
  6. ThisText.focus();
  7. textCounter();
  8. return;
  9. }

textarea:
  1. <TEXTAREA NAME="Message" onKeyDown="textCounter();" onKeyUp="textCounter();"></TEXTAREA>

smiley:
  1. <A HREF="javascript:Smiley();" onClick="javascript:Insert(' >:O ');"><IMG SRC="images/smile/angry.gif" HEIGHT="16px" BORDER="0px"></A>

en 't tellertje:
  1. <INPUT READONLY TYPE="text" NAME="chars" SIZE="4" VALUE="1000" CLASS="inputbox">
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.314s