08. januar 2005 - 16:03Der er
3 kommentarer og 1 løsning
Oversæt fra Php-tjek til JavaScript
Jeg har en formular, hvori der bl.a. er to felter som jeg gerne vil have tjekket v.hj.a. JavaScript efter samme system som f.eks. dette:
<script language="JavaScript"> function giroCheck(f){ if (f.fornavn.value == ""){ alert("Du glemte at skrive kundens fornavn"); f.fornavn.focus(); return false; } if (!f.kundenr.value.match(/^\d{10}$/)){ alert("Kundenummer skal bestå af 10 cifre "); f.kundenr.focus() return false; } return true; } </script>
- altså felterne skal tjekkes, og ved fejlindtastning skal der komme en alert-box med fejlangivelsen.
De to felter jeg har problemer med at tjekke, vil ved kontrol i Php-stil hedde:
if (!eregi("^([a-z]{3})([0-9])([.,])([0-9]{2})-([0-9]){2}([.,])([0-9])$", $_POST['varenr'])) { echo 'Varenummer findes ikke'; }
elseif (!eregi("^([+-]{1})([0-9]{1,2})([.,])([0-9]{2})$", $_POST['var1'])) { echo 'Styrken ikke korrekt udfyldt'; }
-- lige en enkelt kommentar først til dine regexps, for du bruger bl.a. et sted {1}, som altid vil være overflødig, og så kan du ligesågodt bruge \d i stedet for [0-9], da de betyder præcis det samme !-)
Desuden har du lavet en masse overflødige grupperinger () ...
Så det må blive:
<script type="text/javascript"> function giroCheck(f){ if (f.fornavn.value == ""){ alert("Du glemte at skrive kundens fornavn"); f.fornavn.focus(); return false; } if (!f.kundenr.value.match(/^\d{10}$/)){ alert("Kundenummer skal bestå af 10 cifre "); f.kundenr.focus() return false; } return true; } function vareCheck(f){ if (!/^[a-z]{3}\d[.,]\d{2}-\d{2}[.,]\d$/i.test(f.varenr.value)){ alert('Varenummer findes ikke'); f.varenr.focus(); return false; } if (!/^[+-]\d{1,2}[.,]\d{2}$/i.test(f.var1.value)){ alert('Styrken ikke korrekt udfyldt'); f.var1.focus() return false; } return true; } </script>
Jeg er godt klar over at jeg ikke er Nordeuropasmester i at lave RegExps, men det virkede da efter hensigten. Men det du har lavet til mig er fuldstændig som ønsket (som sædvanlig).
Tak for hjælpen. Læg et svar og jeg iler med points.
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.