NOTESSIDAN

Allt om Lotus Notes & Domino




Validera alla typer av fält med javascript
Fältvalidering med Javascript kan vara tidsödande, här ett script som validerar alla olika typer av fält man kan ha på webben. (text,textarea,select-one,radio,select-multiple och checkbox)

Animationen visar hur jag tvingar användaren att fylla alla fält i ett formulär innan det postas till servern.

validation

Här är scriptet som gör valideringen

function valid( Fields, Messages)  { 
var frm = window.document.forms[0]; 
isValid = true; 
var strMsg = "Please enter value for these fields:\n\n"; 
for (var i=0; i<Fields.length ; i++) { 
        var FType=eval( 'frm.'+Fields[i]+'.type' ); 
        switch (FType) 
        { 
        case "text" : 
                if ( eval ( 'frm.'+Fields[i]+'.value' ) =='') { 
                        isValid = false; 
                        strMsg += "- " + Messages[i] +"\n"; 
                }
        break
        case "textarea" : 
        if ( eval ( 'frm.'+Fields[i]+'.value' ) =='') { 
                isValid = false; 
                strMsg += "- " + Messages[i] +"\n"; 
        }
        break
        case "select-one" : 
                chk = 'false'; 
                value = eval ( 'frm.'+Fields[i]+'.options[frm.'+Fields[i]+'.selectedIndex].text');
                if (value !='- Select -' && value != '' ) { 
                        chk = 'true'; 
                }
                if (chk=='false') { 
                        isValid = false; 
                        strMsg += "- " + Messages[i] +"\n"; 
                }
        break
        case "select-multiple": 
                if ( eval ( 'frm.'+Fields[i]+'.selectedIndex')==-1) { 
                        isValid = false; 
                        strMsg += "- " + Messages[i] +"\n"; 
                }
        break
        default: 
                  switch (eval ( 'frm.'+Fields[i]+'[0].type' ) ) { 
                case "radio" : 
                chk = 'false'; 
                for (var m=0;  m < eval ('frm.'+Fields[i]+'.length') ; m++) { 
                                 if ( eval ( 'frm.'+Fields[i]+'['+m +'].checked') ) { 
                                        chk = 'true'; 
                                }
               }
               if (chk=='false') { 
                                isValid = false; 
                                  strMsg += "- " + Messages[i] +"\n"; 
                        } 
                break
                case "checkbox": 
                        chk = 'false'; 
                        for (var m=0;  m < eval ('frm.'+Fields[i]+'.length') ; m++) { 
                                     if ( eval ( 'frm.'+Fields[i]+'['+m +'].checked') ) { 
                                                chk = 'true'; 
                                        }
                       }
                       if (chk=='false') { 
                                        isValid = false; 
                                        strMsg += "- " + Messages[i] +"\n"; 
                        } 
                break
                      }   
       }   
}
if (!isValid) alert(strMsg + "\n"); 
return isValid; 
}


Här är hur du kallar på valideringsfunktionen från en save knapp

var Fields = new Array("Subject","Choice","Check","Body","List")
var Msg = new Array("The Subject","The Choice","Check","Body","List"); 
if(valid(Fields,Msg)){
document.forms[0].submit()}



Relevanta Poster på Notessidan:



Publicerad 2008-03-10 | Kommentarer: 3 | Läsningar: 2516
Kommentarer

Johan Känngård ( 2008-03-11 00:05:57 ) Websida
Smartare är att sätta en klass på HTML-elementet, typ "required", och loopa igenom alla fält och kolla efter den klassen. Om man dessutom använder fieldsets i HTML, är det enkelt att ta fram "titeln" för ett fält. Här är två exempel på hur man kan göra:
http://www.webcredible.co.uk/user-friendly-resources/dom-scripting/validate-forms-javascript.shtml
http://www.onlinetools.org/articles/unobtrusivejavascript/chapter5.html
Thomas ( 2008-03-11 07:58:45 ) Websida
Hej Johan
Tack för länken, jag måste testa detta. jag tycker det är svårt att hitta bra exempel på webben, ofta är alla exempel inkapslade i massa annan kod, men denna verkar lätt att förstå och implementera.

- Thomas



Erik Waldener ( 2008-09-24 10:17:37 )
Jag har testat att validera med denna kod och det funkar fint med Text och andra fält, men problem med checkbox och radio buttons. När jag kör scripter får jag fel på följande rad:
switch (eval ( 'frm.'+Fields[i]+'[0].type' )




Sök på Notessidan
Thomas Adrian
ThomasCertifierad utvecklare och administratör inom Notes & Domino

Kontakta mig







Senaste Sökningarna på Notessidan
Mån - spelo (R:0)
Mån - importera and helgdagar (R:1)
Mån - winmail.dat (R:1)
Mån - länk and till and ms and office (R:0)
Mån - post and blank (R:0)
Mån - helgdagar and 2010 (R:0)
Mån - automatisk and adress (R:0)
Mån - svensk.dic (R:2)
Mån - follow and up (R:0)
Mån - läs and xml (R:5)
Mån - eval (R:4)
Mån - excel and export (R:2)
Mån - länkning (R:0)
Mån - kardemark (R:0)
Mån - traveler (R:8)
Mån - applet (R:3)
Mån - notes and 8.0.2 (R:2)
Mån - locked and out (R:1)
Mån - replikera and lokala and kontakter (R:1)




Databasstatistik Blogg
Uppdateras var 15:e Minut

Antal Poster:528
Antal Kommentarer: 925
Alla sidvisningar idag:
Unika Besökare idag:
Databasstorlek: 4123,5Mb
Fixup: 2011-09-18 05:31:28
FT:2011-09-19 12:14:02
DB Procent använd: 99,7
Antal Agenter: 42
Antal Formulär: 65
Antal Vyer: 59
Antal Dokument: 4636
Antal Image Resources: 108
Antal Subformulär: 18
Antal Scriptbibliotek: 11
Totalt Antal Designelement: 512
Antal Attachments: 155
Antal Konflikter: 0
Server version 1: 379
Server version 2: Release 8.5.2FP1|November 29, 2010
Server Plattform: Windows/32
Ändrad: 2011-09-19 12:29:39
Server Tidszon: Z=-1$DO=1$DL=3 -1 1 10 -1 1$ZX=96$ZN=W. Europe
Region: sv
Kommentarsspam Idag: 0
Kommentarsspam Totalt: 3273


BlogRankers.com

Top Sites at iWEBTOOL.com

Fight Spam! Click Here!

Bloggtoppen.se

Listed on BlogShares

Increase website traffic

Top Internet Blogs

Site Checker