views:

322

answers:

3

Hello. I've searched Google, but all the solutions I could find were really complicated and long. What I need is to limit the input of a textfield in a survey I'm making to digits only. What is the quickest and cleanest way to do this?

(I'm using HTML 4.01 strict and ECMAScript)

Thanks in advance.

+1  A: 

Take a look into this sample: Allowing Only Numbers into a Text Box

Rubens Farias
Hmm, that doesn't seem to work for some reason.
Hussain
+1  A: 

If you are using jQuery, you can use the AlphaNumeric plugin. With this plugin it would be a matter of:

$('.numeric_field').numeric();
Daniel Vassallo
Keep in mind that using javascript to force certain types of input does NOT replace server side validation; I could simply run your page with javascript turned off, or even make modifications to your page in something like firebug before submitting. Not allowing certain chars via JS does not prevent them from being submitted by someone who really wants to.
Erik
Yes of course. Validation is done at the Server-side. At the client-side you're simply improving usability.
Daniel Vassallo
+1  A: 

The quickest:

<input type="text" onkeyup="this.value = this.value.replace(/\D/g, '')">

That won't stop people from pasting things in with their mouse, so an onchange and onclick are probably desirable, too.

The cleanest (or at least a clean way to do it):

function forceNumeric() {
    this.value = this.value.replace(/\D/g, '');
}

If you're using a JS framework, give all your numeral-only inputs a class that indicates the fact (class="numeric" or something like that), and add forceNumeric as a callback for keyup, change, and click to any input element with that class:

$('.numeric').keyup(forceNumeric).change(forceNumeric).click(forceNumeric);

If you're using straight JS (I'd recommend not using straight JS), either use element.addEventListener, or onkeyup, onchange, and onclick.

pib