Posts Tagged ‘ stuff

How to limit a field with javascript-prototype and display the counter

For job purposes I had to learn a lot of JavaScript, including AJAX related stuffs. Like every lazy (but intelligent) developer, I looked around for frameworks that could help me doing my work. I knew that prototype existed, but I never looked at it because of lack of interest. Well it’s great, it’s really great! Nowadays everybody should use frameworks, as their abstraction permits a rapid development without worrying about things like platform compatibility, in our case browsers. Prototype also has a very nice and clean syntax that overtakes functions not compatible with every browser.

In this post I’m going to report a very nice function I implemented for limiting Form input fields, like textarea and input of type text. You have to call it via onkeyup and onkeydown events. The function accepts 3 parameters: field, limit and counterDesired.
The first is the field object, you should use the keyword this for a value.
The second parameter is a limit value, the number of characters that the field should contain at maximum.
The third parameter is optional, false as default. It permits to add a visual counter after the field, like the one you see on YouTube, for example. You can either tell to the function to add the counter for you (put inside a <span> block) or to put it inside another block you’ve already defined. In the second case, the block must have an id of the form ‘fieldID_counter’

This is the compact version, see below for some examples and the expanded, explained version:

<script type="text/javascript">
// < ![CDATA[
function limit_text(field, limit, counterDesired) {
    if (counterDesired == null)
        counterDesired = false;
    var length = $F(field).length;
    if (length > limit)
        $(field).value = $(field).value.substring(0, limit);
    if (counterDesired) {
        if ($($(field).id + '_counter')) {
            $($(field).id + '_counter').update($F(field).length + " / " + limit);
        } else {
            var counterText = new Element('span', {'id': $(field).id + '_counter'});
            counterText.update($F(field).length + " / " + limit);
            $(field).insert({'after': counterText});
        }
    }
}
// ]]>
</script>
 

Read more

Related posts

BD-incollo

BD-incollo is a collaborative debugging tool like pastebin but written using Django.
Why did I write another pastebin clone?
Pastebin is (sometimes) slow, and I’m not (yet) interested to categorize pastes or to associate them to a user. Pastebin is free and the code is available, but is a single php file, and not a Django project!
There are already other services there, even written using Django, but no one is free software. BD-incollo IS free software. Well, BD-incollo has been written after those Django pastebin clones, so i could learn from their mistakes and write a better one! Everybody is welcome to grab the code and modify it, or even to submit suggestions!
Report feedbacks, feature requests and bugs on the issue tracker.

Quick Jump:

Features

Download

License

Features

  • Copy, Paste and store a text / source code to the system
  • NEW! Give other people the possibility to discover your Paste (make a Paste either public or private)
  • Decide to colorize the syntax of the Paste
  • Share it using its URL
  • NEW! Enhance Pastes! Create a Paste starting from an old one
  • NEW! View differences! Makes use of the powerful diff-match-patch by Neil Fraser to see differences between two Pastes
  • NEW! Antispam protection using Akismet and akismet.py by Michael Foord
  • Download it as plain text
  • View it as plain text
  • Search something interesting through other pastes!
  • Report abuses to site admins

Interesting Stuffs

  • Fast, really fast!
  • It works well and has nice urls, thanks to Django
  • A very clean interface, a minimalist design that gives space to the code (as it should always be)
  • Compatible with every browser (tested with Internet Explorer 6,7,8, Mozilla Firefox 3, Apple Safari, Google Chrome)
  • Resolution friendly! Liquid design that adapts to every monitor resolution (tests from 1024×768)
  • Developer friendly! Every functionality of BD-incollo can be done with max 2 mouse clicks and without a mouse scroll!
  • Tested with lots of pastes, quite every source code should be perfectly viewed (this does not happen with every pastebin clones I’ve tried)
  • Uses Pygments for code highlighting

Download

License

BD-incollo is released under The Gnu Affero GPL version 3! This is different from the license of the contents of the blog

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License
along with this program. If not, see < http ://www.gnu.org/licenses/ >.

Related posts

New domain: from daniel.graziotin.net to bd-things.net

As I previously announced, I purchased a brand new domain for my stuff.
The blog is changing during the months, becoming more than a blog but less than a site.
That’s because I decided to buy the domain BD-things.net, because this site contains all of my things, files, thoughts, projects, publications.
The old address daniel.graziotin.net now redirects permanently here and every link should have been updated/rewritten. Please contact me if you encounter problems.
I also took BD-blog.net which points here, too, but I won’t renew it the next year.
Some things are different now, but you won’t notice it ;)
I obviously lost my decent position at Netcraft’s Most Visited Web Sites rank list, but I don’t care. It will be funny to advance with the new domain and reach a even better position!
I hope there will be a new beginning and a brand new life with BD-things!

Related posts