Jump to content

Prevent all caps?


jacmaes
 Share

Recommended Posts

How do you guys deal with editors (or regular users via front-end form submissions) who have their CAPS LOCK key enabled and merrily type in entire paragraphs in uppercase letters as if there's no tomorrow? I don't know why people do this, this drives me crazy  >:(

Do you detect it on the front end with JS and throw a warning, or "process it in post-production" with something like ucwords(strtolower($foo))?

I thought that some simple instructions at the start of the form would be enough, but there's always someone who doesn't read them or just doesn't care. 

Link to comment
Share on other sites

Depends a bit on the actual use-case / scenario. If it's a typical article comments feature, I'd say have an admin review the comments before publishing.

A JS or PHP solution is probably not going to work in 100% of all cases - if someone lists capitalized terms / company names like IBM, HTML, BMW or some such - that's not necessarily shouting or spam, but valid input.

ucwords() would certainly not be the perfect cure; I only ever use it for (english language) titles. For german or french, that would be useless even for titles / headings, because it's not formatted like in english...

If that's a real problem, I'd probably look into some regex magic and block form submission, if >x% of the entire text is uppercase, but I'm by no means a regex guru :D

Perhaps something simple as that might help:

var str = "OH HAI. HOW ARE YOU TODAY? WOULD YOU LIKE SOME cheese with THAT?",
    uc = str.replace(/[^A-Z]/g, "").length,
    total = str.length;

if(uc > (total/20)) {
   console.log("HEY COWBOY! WE'RE NOT IN KANSAS ANYMORE!"); // form submit false etc.
}
  • Like 1
Link to comment
Share on other sites

If that's a real problem, I'd probably look into some regex magic and block form submission, if >x% of the entire text is uppercase, but I'm by no means a regex guru  :D

You don't need regex. You can test simply by converting the string to uppercase and then compare it with the original string:

if (strtoupper($str) === $str)

EDIT: Or in Js

if (string.toUpperCase() === string)
  • Like 1
Link to comment
Share on other sites

 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...