Avatar billede webbe Nybegynder
19. juni 2002 - 10:07 Der er 3 kommentarer og
1 løsning

Javascript på grafisk knap

Hejsa eksperter

Jeg har følgende script som virker fint på en almindelig form-submit-knap og hvis man udfylder de to dato-felter.

Men dato-felterne behøver ikke være udfyldt i min søge-form og scriptet skal kobles på en grafisk submit-knap med mouse-over effekt.

Er der nogen der kan rette scriptet til så datoerne ikke skal være udfyldt samt at det virker med min grafiske submit-knap?


Mit script:

<script language="javascript">
<!--
function val(search) {
    reg = /^\d{2}-\d{2}-\d{4}$/;
        if (!search.strDate1.value.match(reg)) {
            alert("Fejl i fra-datoen!");
            search.strDate1.focus();
            search.strDate1.select();
            return false;
        }
        if (!search.strDate2.value.match(reg)) {
            alert("Fejl i til-datoen!");
            search.strDate2.focus();
            search.strDate2.select();
            return false;
        }
    return true;
}
//-->
</script>


Min formular:

<form method="POST" action="search_res.asp?offset=15&start=0" name="search" onSubmit="return val(this);">
                                          <table width="273" border="0" cellspacing="0" cellpadding="0" height="138">
                                            <tr>
                                              <td height="88" align="left" valign="top">
                                                <table width="272" border="0" cellspacing="0" cellpadding="0" height="88">
                                                  <tr>
                                                    <td align="left" valign="middle">
                                                      <input type="text" name="strSearchOrg" maxlength="50" size="35">
                                                    </td>
                                                  </tr>
                                                  <tr>
                                                    <td align="left" valign="middle">
                                                      <input type="text" name="strSearchNat" maxlength="50" size="35">
                                                    </td>
                                                  </tr>
                                                  <tr>
                                                    <td align="left" valign="middle">
                                                      <input type="text" name="strDate1" maxlength="12" size="10">
                                                      <img src="grafik/lrg_lbl_anddate.jpg" width="57" height="11">
                                                      <input type="text" name="strDate2" maxlength="12" size="10">
                                                    </td>
                                                  </tr>
                                                </table>
                                              </td>
                                            </tr>
                                            <tr>
                                              <td align="left" valign="top">
                                                <a href="java script:document.search.submit()" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('Image37','','grafik/button_search1.jpg',1)"><img name="Image37" border="0" src="grafik/button_search.jpg" width="63" height="13" vspace="2"></a><br>
                                                <a href="search.asp?offset=15&start=1" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('Image38','','grafik/button_clrall1.jpg',1)"><img name="Image38" border="0" src="grafik/button_clrall.jpg" width="75" height="13"></a>
                                              </td>
                                            </tr>
                                          </table>
                                        </form>
Avatar billede eagleeye Praktikant
19. juni 2002 - 20:07 #1
Med dette Javascript tester den og godkender hvis til eller fra dato er tomt.:

<script language="javascript">
<!--
function val(search) {
    reg = /^d{2}-d{2}-d{4}$/;
    if ((search.strDate1.value != '') && (!search.strDate1.value.match(reg))) {
        alert("Fejl i fra-datoen!");
        search.strDate1.focus();
        search.strDate1.select();
        return false;
    }
    if ((search.strDate2.value != '') && (!search.strDate2.value.match(reg))) {
        alert("Fejl i til-datoen!");
        search.strDate2.focus();
        search.strDate2.select();
        return false;
    }
return true;
}
//-->
</script>



Hvis du lavet det image om til et input af typen image, virker det lige som submit:

<input type="image" name="Image37" src="grafik/button_search.jpg" width="63" height="13" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('Image37','','grafik/button_search1.jpg',1)">
Avatar billede webbe Nybegynder
20. juni 2002 - 08:22 #2
eagleeye:

Okay....det løser måske også mit andet problem.

Kan dog først kigge på det på mandag, da jeg først er på arbejde igen der.
Avatar billede webbe Nybegynder
24. juni 2002 - 08:44 #3
Hey eagleeye:

Dit forslag virker ikke helt....for uanset hvad jeg gør melder den fejl i fra-datoen.

Det er ikke så smart.
Avatar billede webbe Nybegynder
26. juni 2002 - 10:00 #4
Har fundet frem til følgende løsning som fungerer perfekt:

function scanboxformatdate(obj) {
    strDate=obj.value;   
    var strDay;   
    var strMonth;   
    var strYear;
    var temp;   
    temp=strDate;   
    strDate=scanboxsecureincReplace(strDate,'/','-');
    strDate=scanboxsecureincReplace(strDate,'.','-');   
    if (strDate.length > 0) {   
        var strDateArray = strDate.split('-');
        if (strDateArray.length!=3) {
            if(strDate.length>5){
                strDay = strDate.substr(0, 2);   
                strMonth = strDate.substr(2, 2);
                strYear = strDate.substr(4);
            }
            else{
                alert('Datoen er ugyldig. \n\nBrug datoformatet dd-mm-åååå');
                obj.select();
                obj.focus();
                return false;
            }
        }
        else {   
            strDay = strDateArray[0];   
            strMonth = strDateArray[1];   
            strYear = strDateArray[2];
        }   
        if (strYear.length==2) {
            if (strYear < 70) {
                strYear = '20' + strYear;
            }
            else {
                strYear = '19' + strYear;
            }
        }   
        strYear = parseInt(strYear);
        if (strDay.length < 2) {
            strDay='0' + strDay;
        }   
        if (strMonth.length < 2) {
            strMonth='0' + strMonth;
        }   
        if (strYear.length == 1) {
            strYear='0' + strYear;
        }   
        if (strYear.length < 4) {
            strYear='20' + strYear;
        }   
        temp = strDay + '-' + strMonth + '-' + strYear;   
    }   
    else {
    }   
    if (scanboxsecureincCheckDato(temp)) {
        obj.value = temp;
    }
    else {
        alert('Datoen er ugyldig. \n\nBrug datoformatet dd-mm-åååå');   
        obj.value = strDate;
        obj.focus();
        obj.select();
        return false;
    }
    return true;
}

function scanboxsecureincCheckDato(cdato) {
    if (cdato != '') {
        if (cdato.length > 5) {
            if (scanboxsecureincchkdate(cdato)) {
                return true;
            }
            else {
                return false;
            }
        }
    }
    else {
        return true;
    }
}

function scanboxsecureincchkdate(objName) {
    var strDatestyle = "EU";
    var strDate;
    var strDay;
    var strMonth;
    var strYear;
    var intday;
    var intMonth;
    var intYear;
    var booFound = false;
    var strSeparatorArray = new Array("-"," ","/",".");
    var intElementNr;
    var err = 0;
    strDate = objName;
    for (intElementNr = 0; intElementNr < strSeparatorArray.length; intElementNr++) {
        if (strDate.indexOf(strSeparatorArray[intElementNr]) != -1) {
            strDateArray = strDate.split(strSeparatorArray[intElementNr]);
            if (strDateArray.length != 3) {
                err = 1;return false;
            }
            else {
                strDay = strDateArray[0];
                strMonth = strDateArray[1];
                strYear = strDateArray[2];
            }
            booFound = true;
        }
    }
    if (booFound == false) {
        if (strDate.length>5) {
            strDay = strDate.substr(0, 2);
            strMonth = strDate.substr(2, 2);
            strYear = strDate.substr(4);
        }
    }
    if (strYear.length == 2) {
        if (strYear < 70) {
            strYear = '20' + strYear;
        }
        else {
            strYear = '19' + strYear;
        }
    }
    if (strDatestyle == "US") {
        strTemp = strDay;
        strDay = strMonth;
        strMonth = strTemp;
    }
    intday = parseInt(strDay, 10);
    if (strYear>=2100 || strYear < 1850) {
        err = 30;
        return false;
    }
    if (isNaN(intday)) {
        err = 2;
        return false;
    }
    intMonth = parseInt(strMonth, 10);
    if (isNaN(intMonth)) {
        err = 3;
        return false;
    }
    intYear = parseInt(strYear, 10);
    if (isNaN(intYear)) {
        err = 4;
        return false;
    }
    if (intMonth>12 || intMonth<1) {
        err = 5;return false;
    }
    if ((intMonth == 1 || intMonth == 3 || intMonth == 5 || intMonth == 7 || intMonth == 8 || intMonth == 10 || intMonth == 12) && (intday > 31 || intday < 1)) {
        err = 6;
        return false;
    }
    if ((intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11) && (intday > 30 || intday < 1)) {
        err = 7;
        return false;
    }
    if (intMonth == 2) {
        if (intday < 1) {
            err = 8;
            return false;
        }
        if (scanboxsecureincLeapYear(intYear) == true) {
            if (intday > 29) {
                err = 9;
                return false;
            }
        }
        else {
            if (intday > 28) {
                err = 10;return false;
            }
        }
    }
    return true;
}

function scanboxsecureincLeapYear(intYear) {
    if (intYear % 100 == 0) {
        if (intYear % 400 == 0) {
            return true;
        }
    }
    else {
        if ((intYear % 4) == 0) {
            return true;
        }
    }
    return false;
}

function scanboxsecureincReplace(tekst,soeg,indsaet) {
    var string = tekst;
    var stringArray = string.split(soeg);   
    var a=stringArray[0];   
    for (var i=1; i < stringArray.length; i++) {
        a += indsaet + (stringArray[i]);
    }   
    return a;
}

<input type="TEXT" name="strDate1" size="15" onBlur="scanboxformatdate(this);">
<input type="TEXT" name="strDate2" size="15" onBlur="scanboxformatdate(this);">
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