0

I am trying to make a form where users can input a pagenumber and jump to a certain page which is identified by its div ID.

<form id="gotopage" class="uniForm">
    <input id="pagenumber" name="pagenumber" value="" size="10" type="text" />
</form>
<script>
$(document).ready(function() {
     $('#gotopage').submit( function() {              
          goUrl = 'index.html#pg-' + $('#pagenumber').val().toLowerCase();
          window.location = goUrl;
          return false;  // Prevent the default form behaviour
     });
});
</script>

I can get this to work nicely except I named my ID's in a manner such that its 3-digits for example:

<div id="pg-001">, <div id="pg-002>, <div id="pg-003"> and so on and so forth.

Is there a way to tweak my above code such that I can tell it to add the relevant zeros to make up a 3 digit number for any number that the user inputs?

Thank you in advance.

Natoli
  • 1
  • 1

3 Answers3

2

You could create a function for it like this:

function padNum(num,length)
{
    length = length || 3;num+="";
    while(num.length < length) num="0"+num;
    return num;
}

Examples:

var newid = padNum(3);//003
var newid = padNum(3,4);//0003

Shorter (but less legible) function if wanted

function padNum(num,length)
{
    return Array((length||3)-((num+"").length-1)).join("0")+num;
}

Note: functions are defaulting the length parameter to 3 when not specified

MDEV
  • 10,240
  • 1
  • 29
  • 49
1

used this code :

function pad (str, max) {
  return str.length < max ? pad("0" + str, max) : str;
}

Output:

pad("12", 3);    // => "012"


<form id="gotopage" class="uniForm">
    <input id="pagenumber" name="pagenumber" value="" size="10" type="text" />
</form>
<script>
$(document).ready(function() {
     $('#gotopage').submit( function() {              
          goUrl = 'index.html#pg-' + pad($('#pagenumber').val().toLowerCase(),3);
          window.location = goUrl;
          return false;  // Prevent the default form behaviour
     });
});
</script>
Shakti Patel
  • 3,482
  • 4
  • 19
  • 27
0
var num = $('#pagenumber').val().toLowerCase();
var len = num.length;
var result = [0, 0].slice(0, len < 4 ? 3 - len : 0).join('') + num;

Fiddle

Andy
  • 39,764
  • 8
  • 53
  • 80