Input valueAsNumber

By  on  

Every once in a while I learn about a JavaScript property that I wish I had known about years earlier -- valueAsNumber is one of them. The valueAsNumber provides the value of an input[type=number] as a Number type, instead of the traditional string representation when you get the value:

/*
 Assuming an <input type="number" value="1.234" />
*/

// BAD: Get the value and convert the number
input.value // "1.234"
const numberValue = parseFloat(input.value, 10);

// GOOD: Use valueAsNumber
input.valueAsNumber // 1.234

This property allows us to avoid parseInt/parseFloat, but one gotcha with valueAsNumber is that it will return NaN if the input is empty.

Thank you to Steve Sewell for making me aware of valueAsNumber!

Recent Features

  • By
    CSS Filters

    CSS filter support recently landed within WebKit nightlies. CSS filters provide a method for modifying the rendering of a basic DOM element, image, or video. CSS filters allow for blurring, warping, and modifying the color intensity of elements. Let's have...

  • By
    fetch API

    One of the worst kept secrets about AJAX on the web is that the underlying API for it, XMLHttpRequest, wasn't really made for what we've been using it for.  We've done well to create elegant APIs around XHR but we know we can do better.  Our effort to...

Incredible Demos

  • By
    Checkbox Filtering Using MooTools ElementFilter

    When I first wrote MooTools ElementFilter, I didn't think much of it. Fast forward eight months later and I've realized I've used the plugin a billion times. Hell, even one of the "big 3" search engines is using it for their maps application.

  • By
    Save Web Form Content Using Control + S

    We've all used word processing applications like Microsoft Word and if there's one thing they've taught you it's that you need to save every few seconds in anticipation of the inevitable crash. WordPress has mimicked this functionality within their WYSIWYG editor and I use it...

Discussion

  1. Martin

    Great tip! Is there anything wrong with parseInt / parseFloat, apart from the extra line of code? (you labeled it “BAD”)

    • Kyryl

      Depending on lang, decimal separator can be comma. So, parseFloat('0,01'); will return 0 instead of 0.01.

  2. yann

    Leaving this here hoping it saves some time I wish I had saved to some other person looking for an answer…

    If you’re using this on an html input, maybe with angular… it works great, but you NEED to add the 'type="number"' to your input or it will keep giving u NaN no matter what’s in the input box.

    The reason ?
    for some reason that I am not looking up at this time, valueAsNumber does NOT work on String types, but the default type of an html input is String.

  3. Bonjour,

    parseFloat(string, 10) vs Number(string)

Wrap your code in <pre class="{language}"></pre> tags, link to a GitHub gist, JSFiddle fiddle, or CodePen pen to embed!