View Full Version : limit character input (by count) with : in textarea name

10-03-2012, 02:43 AM
I have a nice js character limit script I have used for a long time with no problem.

function limitText(limitField, limitCount, limitNum) {
if (limitField.value.length > limitNum) {
limitField.value = limitField.value.substring(0, limitNum);
} else { limitCount.value = limitNum - limitField.value.length; }}

I now have a form processor that has a naming system

textarea name=5)MIN:TXT:message
the element trigger looks like

<textarea name=5)MIN:TXT:message cols=40 rows=14
And the limit script baulks at the characters ) : in the name.

I have tried quotes, escaped quotes and characters and various incantations but can't seem to convince it to work.

Any suggested fix on this one - or pointers to another similar script that will cope with this naming system.


Old Pedant
10-03-2012, 03:00 AM
Actually, it balks even at the leading digit in the name.

If you won't follow normal naming rules for form fields you have to
(1) Ensure that you put "..." around the entire name.
(2) Use form["..."] in the JS code to refer to the field.


But you really never needed to refer to THAT <textarea> by name in that JS code, in the first place.

Just do this:

<textarea name="5)MIN:TXT:message"
onkeyup ="limitText(this,this.form.countdown,10);"
><?php echo $value[5];?></textarea>

Notice carefully the quotes around the field name.
Notice that just this alone specifies the current field! nothing else needed.

Stop using PHP to output complex HTML. Do as I show there: Output the HTML, yes, and then only use the minimal PHP needed to output the contents.

Oh...and upper case letters in event handler names is obsolete. onkeyup and onkeydown are correct.

10-03-2012, 03:20 AM
Yes - and yes again.

The naming system fits with a generic form processor with lots of options - fed via the name.

And - this,this.form.
part of (this) element - obvious now you point it out.

>> Stop using PHP to output complex HTML
Yes, I do tend to just set up <? and type away.

Thanks so much.
You have helped me before -