Avatar billede no_doubt Nybegynder
15. november 2008 - 17:01 Der er 4 kommentarer og
1 løsning

formatering af tid

Jeg har fundet dette script, og jeg ved ikke hvor meget der kan bruges, men jkeg vil gerne have at et tekstfelt selv formatere inputtet til det jeg gerne vil have, og det er:
11:11

Her angiver 1 tal. - Hvis nogen kan udrede en løsning vil jeg meget gerne have dette.

function format_time(obj)
    {
        errors = true;
   
        timestr = obj.value.replace(/\s/,'');
        // fjerner alle whitespaces
   
        match = /^([0-2][0-9]?([,.][0-9]{1,2})?|([0-2]?[0-9]:|[0-2][0-9])[0-9][0-9]|[0-9])$/
        if (timestr.search(match) != -1)
        {
            // passer ind i det tilladte mønster
            // 1 11 11,5 11,50 11:30 1130 
   
            if (timestr.search(/[,.:]/) != -1)
            {
                // 11,2 11.2 eller 11:20
                usescomma = timestr.search(/[,.]/) != -1; // er det , eller. notationen (ikke :)?
                timestrArr = timestr.split(/[,.:]/); // split på et af de tre gyldige tegn
                timer = (timestrArr[0].length == 2) ? timestrArr[0] : '0' + timestrArr[0];
                minutter =  timestrArr[1];
                if (usescomma)
                {
                    minutter = (minutter.length == 2) ? minutter : minutter + '0';
                    minutter = Math.round((minutter * 60) / 100) + '';
                    minutter = (minutter.length == 2) ? minutter : '0' + minutter;
                }
                timestr = timer + ":" + minutter;
            }
            else if (timestr.length == 1)
            {
                // 1
                timestr = '0' + timestr + ':00';
            }
            else if (timestr.length == 2)
            {
                // 11 eller 01
                timestr = timestr + ':00';
            }
            else
            {
                // 0100 format
                timestr = timestr.replace(/([0-9]{2})([0-9]{2})/,'$1:$2');
            }
            // timestr er nu i formatet xx:xx men kan godt være 29:20 men ikke 12:60
           
            if (Math.abs(timestr.split(':')[1]) > 60)
            {
                var hr = parseInt(timestr.split(':')[0]);
                var mi = parseInt(timestr.split(':')[1]);
               
                hr += parseInt(mi / 60);
                mi = parseInt(mi % 60);
               
                str_hr = '' + hr;
                str_mi = '' + mi;
               
                timestr = (str_hr.length == 1?'0'+ str_hr:str_hr) + ':' + (str_mi.length == 1?'0'+ str_mi:str_mi)
            }
           
            if (Math.abs(timestr.split(':')[0]) < 24)
            {
                errors = false;
            }
        }
       
        if (errors)
        {
        //    alert(fieldname + ' skal udfyldes efter formatet "hh:mm".');
        //    this.focus();
        //    obj.select();
        //    obj.focus();
            return false;
        }
        else
        {
            obj.value = timestr;
            return true;
        }
    }
Avatar billede olebole Juniormester
15. november 2008 - 17:10 #1
<ole>

Hvordan skal det bruges? Er du sikker på, det ikke er langt bedre at lave to dropdowns med timer og minutter? Det plejer det at give langt færre problemer - både for programmør og bruger  =)

/mvh
</bole>
Avatar billede olebole Juniormester
15. november 2008 - 17:27 #2
I princippet kan det f.eks. gøres således:

<script type="text/javascript">
var oHours = {from:0, to:23}; // Sæt intervallet
var nMinInterval = 10; // Sæt springet mellem minutter

window.onload = function() {
    var o, n, oFrag = document.createDocumentFragment(),
    oSelHour = document.getElementById("selHour"),
    oSelMin = document.getElementById("selMin");
   
    for (var i=oHours.from; i<=oHours.to; i++) {
        n = i<10 ? "0"+i : i;
        o = document.createElement("option");
        o.setAttribute("value", n);
        o.appendChild(document.createTextNode(n));
        oFrag.appendChild(o);
    }
    oSelHour.replaceChild(oFrag, oSelHour.firstChild);
   
    oFrag = document.createDocumentFragment();
    for (var i=0; i<60; i+=nMinInterval) {
        n = i<10 ? "0"+i : i;
        o = document.createElement("option");
        o.setAttribute("value", n);
        o.appendChild(document.createTextNode(n));
        oFrag.appendChild(o);
    }
    oSelMin.replaceChild(oFrag, oSelMin.firstChild);
}
</script>

<select id="selHour" style="width:50px"><option></option></select> : <select id="selMin" style="width:50px"><option></option></select>
Avatar billede no_doubt Nybegynder
15. november 2008 - 20:15 #3
Selv. det var da også en god løsning (dropdown)
Avatar billede no_doubt Nybegynder
09. december 2009 - 16:01 #4
svar drenge ?
Avatar billede no_doubt Nybegynder
27. maj 2011 - 18:39 #5
Ingen svar ?
Skriv gerne for points, så laver jeg et spørgsmål til jer :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester