"Yann-Erwan Perio" <y-e.perio@em-lyon.com> wrote in message
news:41554379$0$26804$626a14ce@news.free.fr...[color=blue]
> WindAndWaves wrote:
>[color=green]
> > I would like to format a field in a form once the person has completed[/color][/color]
it.[color=blue][color=green]
> > The format should be "00". For example, if the person puts 1 then it[/color][/color]
should[color=blue][color=green]
> > become 01 and if the person puts 12 in the field then it should stay[/color][/color]
like[color=blue][color=green]
> > that. If the person puts 2004 then it should become 04, and if the[/color][/color]
person[color=blue][color=green]
> > puts 012 then it should become 12.
> >
> > At the same time, it would also be cool if we can warn the user that it
> > should only contain numbers [0-9].[/color]
>
> Check the manual for the "substring" String method, or the "replace"
> String method with a regexp:
>
>[/color]
<URL:
http://devedge.netscape.com/library/...pt/1.5/referen
ce/string.html#1194665>[color=blue]
>[/color]
<URL:
http://devedge.netscape.com/library/...pt/1.5/referen
ce/string.html#1194258>[color=blue]
>
>
> Here's an illustration:
>
> ---
> <form action="" onsubmit="return validate(this)">
> <input type="text" onblur="check(this, 'foo1', 'empty', '2num')">
> <input type="text" onblur="check(this, 'foo2', 'empty', '2num')">
> <input type="text" onblur="check(this, 'foo3', 'empty', '2num')">
> <input type="submit">
> </form>
>
> <script type="text/javascript">
> function padLeft(str, pad, count) {
> while(str.length<count)
> str=pad+str;
> return str;
> }
>
> function check(el, field) {
> //controller
> var result={error:""};
> for(var ii=2; ii<arguments.length; ii++)
> if((result=singleCheck(el, field, arguments[ii])).error)
> break;
> return result;
>
> //single check
> function singleCheck(el, field, type) {
> var result={error:""};
> switch(type) {
> case "empty" :
> if(/^\s*$/.test(el.value)) {
> result.error="field "+field+" : should not be empty.";
> }
> break;
> case "2num" :
> if(!/^\d+$/.test(el.value)) {
> result.error="field "+field+" : should contain only numbers.";
> } else {
> el.value=
> padLeft(el.value.replace(/^\d+(\d\d)$/,"$1"), "0", 2);
> }
> break;
> }
>
> if(el.style)
> el.style.borderColor = result.error ? "#c00" : "";
>
> return result;
> }
> }
>
> function validate(form){
> var a=[], msg=[], index=1;
>
> // re-test the fields
> a[a.length]=check(form.elements[0], "foo1", "empty", "2num");
> a[a.length]=check(form.elements[1], "foo2", "empty", "2num");
> a[a.length]=check(form.elements[2], "foo3", "empty", "2num");
>
> //analyse the tests
> for(var ii=0; ii<a.length; ii++)
> if(a[ii].error)
> msg[msg.length]=(index++)+" - "+a[ii].error;
>
> //alert the message, if any
> if(msg.length)
> alert(msg.join("\n"));
>
> //handle form's submission
> return !msg.length;
> }
> </script>
> ---
>
>
> HTH
> Yep.[/color]
Cheers - I will have a go at that. Thank you.