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
Sön - sharepoint (R:1)
Sön - räkna and antal and besökare (R:0)
Sön - browser (R:17)
Sön - stoppar and mail (R:1)
Sön - korrupt (R:3)
Sön - böcker (R:0)
Sön - kalendern (R:12)
Sön - feature (R:15)
Sön - print and mime (R:2)
Sön - länka (R:0)
Sön - databasen (R:94)
Sön - access (R:47)
Sön - outlook (R:15)
Sön - webanvändare (R:0)
Sön - google and maps (R:6)
Sön - juffe (R:2)
Sön - uidoc.print (R:1)
Sön - java and lotusscript (R:26)
Sön - besök (R:0)




Databasstatistik Blogg
Uppdateras var 15:e Minut

Antal Poster:562
Antal Kommentarer: 1381
Alla sidvisningar idag:
Unika Besökare idag:
Databasstorlek: 184,25Mb
Fixup: 2019-07-21 00:31:05
FT:2019-07-22 07:13:00
DB Procent använd: 99,8
Antal Agenter: 42
Antal Formulär: 65
Antal Vyer: 60
Antal Dokument: 7933
Antal Image Resources: 108
Antal Subformulär: 18
Antal Scriptbibliotek: 11
Totalt Antal Designelement: 576
Antal Attachments: 159
Antal Konflikter: 0
Server version 1: 405
Server version 2: Release 9.0.1FP9|August 14, 2017
Server Plattform: Windows/64
Ändrad: 2019-07-22 09:01:26
Server Tidszon: Z=-1$DO=1$DL=3 -1 1 10 -1 1$ZX=131$ZN=W. Europe
Region:
Kommentarsspam Idag: 5
Kommentarsspam Totalt: 17957


BlogRankers.com

Top Sites at iWEBTOOL.com

Fight Spam! Click Here!

Bloggtoppen.se

Listed on BlogShares

Increase website traffic

Top Internet Blogs

Site Checker