PDA

View Full Version : Word count mod - Ajax


aceofspades
05-30-2008, 09:58 AM
Hey guys,

Is there a way to count the current amount of words typed in the message box and calculate how many characters remain untill the word limit is reached?

You can see an example here:
http://www.newgrounds.com/bbs/post/reply/914240

James

Dismounted
05-30-2008, 11:53 AM
AJAX is not needed. JS is all that is required. I'm sure there are many tutorials on the net that will tell you have to get this counter.

aceofspades
05-31-2008, 09:59 AM
Hi,

Ive been trying to do this but have come across some difficulties. First of all here is my code to count the characters:


<html>
<head>
<title>Javascript Character Count</title>
<link href="basic.css" rel="stylesheet" type="text/css" />
<script language="JavaScript">

var running = false;

function start(){
running = true;
setTimeout('run();',500);
}

function run(){
document.ccform.display.value = document.ccform.text.value.length;
if(running)
setTimeout('run();',100);
}

function stop(){
running = false;
}

</script>
</head>
<body>
<h1>Javascript Character Counter</h1>
<form name="ccform">
<p><textarea name="text" rows="20" cols="100" onfocus="start();" onblur="stop();"></textarea></p>

<p><input type="text" name="display" /></p>
</form>

</body>
</html>


What i did was first impliment this into my editor_toolbar_off template, so that i had this:


<div class="controlbar" style="text-align:$stylevar[left]">
<form name="ccform">
<textarea name="message" id="{$editorid}_textarea" rows="10" cols="60" style="width:$stylevar[messagewidth]; height:60px" tabindex="1">$newpost[message]</textarea>
<p><input type="text" name="display" /></p>
</form>
</div>


In bold is what i added and in italic is the var im going to change in the javascript example (from text to message)

Now i went to my editor_clientscript template and added the javascript with the rest of the javascript, this is what i added:

<script language="JavaScript">

var running = false;

function start(){
running = true;
setTimeout('run();',500);
}

function run(){
document.ccform.display.value = document.ccform.message.value.length;
if(running)
setTimeout('run();',100);
}

function stop(){
running = false;
}

</script>

However what i am then left with is a box at the bottom that is meant to be displaying the number of words typed, but when i type numbers no numbers apprear or increase.

Can anyone tell me what the problem is? Ive tried to do it myself a few times but i really cant figure it out. I can provide any more information if it will help.

James

--------------- Added 1212254583 at 1212254583 ---------------

Ive just tested the code as it was originally posted and it works fine so im having a really hard time finding out why it isnt working. Ive also tried pasting the code at the top of the editor_toolbar_off template with the other javascript and it doesnt work there either :'(

aceofspades
06-01-2008, 10:02 AM
Bump, i still cant figure this out and would really appreciate some help.

Regards,

James

GameWizard
06-02-2008, 02:12 AM
Remove the below in red:
<div class="controlbar" style="text-align:$stylevar[left]">
<form name="ccform">
<textarea name="message" id="{$editorid}_textarea" rows="10" cols="60" style="width:$stylevar[messagewidth]; height:60px" tabindex="1">$newpost[message]</textarea>
<p><input type="text" name="display" /></p>
</form>
</div>


Note the changes that are in blue:
<script language="JavaScript">

var running = false;

function start(){
running = true;
setTimeout('run();',500);
}

function run(){
document.vbform.display.value = document.vbform.message.value.length;
if(running)
setTimeout('run();',100);
}

function stop(){
running = false;
}

</script>You need to remove the ccform before there is already a form around the newthread area and so forth which is called 'vbform', so you don't need an additional form.

aceofspades
06-02-2008, 07:28 AM
Thank you for the help. I made the adjustments that you suggested:

At the start of my editor_clientscript i have this javascript:


<!-- EDITOR SCRIPTS -->
<script language="JavaScript">

var running = false;

function start(){
running = true;
setTimeout('run();',500);
}

function run(){
document.vbform.display.value = document.vbform.message.value.length;
if(running)
setTimeout('run();',100);
}

function stop(){
running = false;
}

</script>
....


In my editor_toolbar_off template i have this at the start:


<!-- START NORMAL TEXT AREA -->
$vBeditTemplate[clientscript]

<div class="controlbar" style="text-align:$stylevar[left]">
<textarea name="message" id="{$editorid}_textarea" rows="10" cols="60" style="width:$stylevar[messagewidth]; height:60px" tabindex="1">$newpost[message]</textarea>
<p><input type="text" name="display" /></p>
</div>


Attached is the situation i have at the moment, i have the box for the numbers to display in, but when i type the javascript doesnt seem to register the letters and so the numbers dont go up.

GameWizard
06-02-2008, 08:44 AM
I too have tried many variants of the code but it appears that due to the nature of the vBulletin text editor, it doesn't seem to register it as 'message' for the name but rather something else, or nothing at all. Unless you can find another way to call the actual text area of the editor then it won't be able to count the text.