Avatar billede aerobee Nybegynder
25. november 2009 - 19:28 Der er 4 kommentarer og
1 løsning

function til tjek for pattern (regxp)

Hej eksperter
Jeg er ikke så stærk i javascript desværre.
Jeg skal bruge en function der skal validere ef formular felt efter et givent pattern. Opfyldes dette skal følgende fyres af:
document.getElementById('').disabled = false ellers skal den sættes til true.

Okay, hvad jeg prøver at opnå er at samtidig med at en bruger indtaster i et formular felt valideres der. Med det samme det ønskede pattern opfyldes skal en button aktiveres, ellers er den deaktiv.

Det mønster der skal indskrives i feltet er:
1) SKAL starte med http:// eller https:// eller ftp://
2) Der skal findes minimum ét . (punktum)

Jeg skal sikre mig at brugeren indtaster en URL.

Jeg har et pattern i PHP, måske dette kan bruges i js ?
/^(http|https|ftp):\/\/([A-Z0-9][A-Z0-9_-]*(?:\.[A-Z0-9][A-Z0-9_-]*)+):?(\d+)?\/?/i
Avatar billede FrederikBache Nybegynder
25. november 2009 - 19:42 #1
Prøv det følgende:

var regexp = /^(http|https|ftp):\/\/([A-Z0-9][A-Z0-9_-]*(?:\.[A-Z0-9][A-Z0-9_-]*)+):?(\d+)?\/?/i;

document.getElementById("idPåTekstFelt").onkeyup = function(){
    document.getElementById("idPåKnappen").disabled = regexp.test(this.value);
}
Avatar billede FrederikBache Nybegynder
25. november 2009 - 19:44 #2
og så bør du nok lige omslutte det hele med en window.onload, så du først kører koden, når siden er indlæst, dvs:


var regexp = /^(http|https|ftp):\/\/([A-Z0-9][A-Z0-9_-]*(?:\.[A-Z0-9][A-Z0-9_-]*)+):?(\d+)?\/?/i;

window.onload = function(){

document.getElementById("idPåTekstFelt").onkeyup = function(){
    document.getElementById("idPåKnappen").disabled = regexp.test(this.value);
}

}

Avatar billede aerobee Nybegynder
25. november 2009 - 20:02 #3
Jeg gør sådan her
-----------------

function testme(field){
  var regexp = /^(http|https|ftp):\/\/([A-Z0-9][A-Z0-9_-]*(?:\.[A-Z0-9][A-Z0-9_-]*)+):?(\d+)?\/?/i;
  if(regexp.test(document.getElementById(field).value)){
    result = "<input type='button' value='klik her for at generere linket' class='cursor' onclick='dosomething()' />";
    document.getElementById('result').innerHTML = result;
  }else{
    document.getElementById('result').innerHTML = '<em>venter på input...</em>';
  }
}

<input type='text' id='linket' onkeydown='testme(\"linket\");' style='width:225px;' />

meeeeeeen den gør det ikke heeeelt korrekt.. Fx validere den http://ww <-- allerede der som korrekt syntax. Den kan man ikke sige er en gyldig url.. Er det mig der gør noget forkert ?
Avatar billede FrederikBache Nybegynder
25. november 2009 - 22:32 #4
Selve dit setup ser rigtig fint ud. Problemet ligger garanteret i regexp'en. Har fundet den her (har ikke selv testet den, og det tager tid at skrive en god en selv :)) men se om den virker for dig.

/(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/
Avatar billede aerobee Nybegynder
26. november 2009 - 08:55 #5
Den virker heller ikke optimalt.
Jeg må prøve at google mig efter en så.
Tak for indsatsen.
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