PeeerMedlem sedan mars 20025 362 inlägg
<form action="add.php?add=results&step=3" method="post">
<input type="hidden" name="compid" value="1">
<tr><td><input type="text" name="u3" class="form"></td></tr>
<tr><td><input type="text" name="u6" class="form"></td></tr>
<tr><td><input type="text" name="u7" class="form"></td></tr>
<tr><td><input type="text" name="u5" class="form"></td></tr>
<tr><td><input type="text" name="u45" class="form"></td></tr>
<input type="submit" value="Spara"></form>
När jag submitar formuläret så vill jag göra en koll på alla textrutor (de som har ett namn som börjar på u). Dessa ska vara skrivna i formatet XX:YY alternativt vara lämnade tomma. XX kan vara allt mellan 00 och 59, samma sak gäller för YY.
Dvs "00:59", "59:59", "", "15:00" är godkända, medans "0a:15", "00:60", "0015" inte är godkända. Hur gör jag detta?
Peter SMedlem sedan dec. 20025 484 inlägg
<head>
<script type="text/javascript">
<!--
function validate(o){
var f=o.elements,i=f.length;
while(i-->0){
if(f[i].name.indexOf("u")==0){
if(f[i].value.length<1){
continue;
}
if(!/^([0-5]{1}[0-9]{1}):([0-5]{1}[0-9]{1})$/.test(f[i].value)){
alert("Fel");
return false;
}
}
}
};
//-->
</script>
</head>
...
<form action="add.php?add=results&step=3" method="post" onsubmit="return validate(this)">
<input type="hidden" name="compid" value="1">
<tr><td><input type="text" name="u3" class="form"></td></tr>
<tr><td><input type="text" name="u6" class="form"></td></tr>
<tr><td><input type="text" name="u7" class="form"></td></tr>
<tr><td><input type="text" name="u5" class="form"></td></tr>
<tr><td><input type="text" name="u45" class="form"></td></tr>
<input type="submit" value="Spara"></form>
:)
PeeerMedlem sedan mars 20025 362 inlägg
Tackar!
Testar när jag kommer hem. :)
PeeerMedlem sedan mars 20025 362 inlägg
Det fungerade utmärkt. Tackar!
MickeA.comMedlem sedan feb. 20034 528 inlägg
Jag skulle behöva ha lite hjälp med att modifiera ovanstående JS-Funktion litegrann.
Det är så att jag har ett formulär som skrivs ut dynamsikt och behöver kolla så at alla fält (alla är av typen "text") är ifyllda.
Formuläret består av3 stycken fält på varje "rad" ('mItem_SE', 'mItem_EN' samt 'mSOrder').
Hur ska jag göra?
Peter SMedlem sedan dec. 20025 484 inlägg
Det beror på hur du vill att fälten skall valideras och när valideringen skall ske. Om de ej får vara tomma vid submit:
function trim(s){
return s.replace(/(^\s)|(\s$)/g, "");
}
function validate(f){
var elms = f.elements;
if (trim(elms["mItem_SE"].value).length == 0){
alert("SE");
return false;
}
if (trim(elms["mItem_EN"].value).length == 0){
alert("EN");
return false;
}
if (trim(elms["mSOrder"].value).length == 0){
alert("mSOrder");
return false;
}
return true;
}
<form onsubmit="return validate(this)"...
MickeA.comMedlem sedan feb. 20034 528 inlägg
Oj, det där ser jättebra ut, fullt användbart i mitt fall, men skulle man kanske kunna fixa till så den validerar "rätt" saker med en gång, kanske lätt att lägga in i ovanstående funktion?
Det är nämligen så att fält nummer 1 ('mItem_SE') är svenska , där får man fylla i max 50 tecken, a-ö, A-Ö, mellanslag etc.
Det andra fältet, (mItem_EN) är engelska och får således bara innehålla a-z, A-Z samt mellanslag etc.
Det tredje och sista fältet, ('mSOrder') är visningsordning för knapparna och får endast innehålla siffror, (1-9).
Nu är problemet att jag var tvungen att lägga till ID-Nummer för varje fältnamn, eftersom koden ligger i en Loop som kör en UPDATE till databasen på "varje varv".
Se http://www.webforum.nu/showthread.php?s=&threadid=129790&forumid=22 för mer info om själva koden.
Går det fortfarande att lösa det här på ett smidigt sätt, skulle behöva en validering av dessa fält.
Tack!
Peter SMedlem sedan dec. 20025 484 inlägg
function remws(s){
return s.replace(/\s/g, "");
}
function validate(obj){
var elms = obj.elements,
len = elms.length;
for (var i = 0; i < len; ++i){
if (elms[i].type != "hidden"){
if (/^mItem_SE/.test(elms[i].name)
&& !/^[\wåäö\/]+$/i.test(remws(elms[i].value))){
alert(elms[i].name);
return false;
} else if (/^mItem_EN/.test(elms[i].name)
&& !/^[a-z0-9_\/]+$/i.test(remws(elms[i].value))){
alert(elms[i].name);
return false;
} else if (/^mSorder/.test(elms[i].name)
&& !/^\d+$/.test(remws(elms[i].value))){
alert(elms[i].name);
return false;
}
}
}
return true;
}
<form onsubmit="return validate(this)"...
MickeA.comMedlem sedan feb. 20034 528 inlägg
Ahh, där satt den ;)
Tack så mkt!
MickeA.comMedlem sedan feb. 20034 528 inlägg
Hmm, något är fel, när jag klistrar in koden i min js-fil, så lägger den av helt och hållet i Mozilla FF.
Koden ser ut såhär:
<!--
function remws(s){
return s.replace(/\s/g, "");
}
//-->
<!--
function validate(obj){
var elms = obj.elements,
len = elms.length;
for (var i = 0; i < len; ++i){
if (elms[ i ].type != "hidden"){
if (/^mItem_SE/.test(elms[ i ].name)
&& !/^[\wåäö/]+$/i.test(remws(elms[ i ].value))){
alert(elms[ i ].name);
return false;
} else if (/^mItem_EN/.test(elms[ i ].name)
&& !/^[\w/]+$/.test(remws(elms[ i ].value))){
alert(elms[ i ].name);
return false;
} else if (/^mSorder/.test(elms[ i ].name)
&& !/^[1-9]$/.test(remws(elms[ i ].value))){
alert(elms[ i ].name);
return false;
}
}
}
return true;
}
//-->
Det konstiga är att i IE så funkar allt skitbra, men det verkar som att FF inte längre hittar js-filen efter att jag klistrat in koden ovan, för samtliga funktioner i filen blir
'funktionsnamn' not defined.
Som sagt, allt funkar i IE, men i Mozilla lägger filen av helt och hållet om det innehåller scriptet ovan.
Vad gör man åt det här, aldrig råkat ut för't tidigare.
Tack!
/r wF gillade inte [ i] i mitt kodexempel ovan, så har särat på dessa i form av [ i ]
Peter SMedlem sedan dec. 20025 484 inlägg
Jag hade glömt att escape:a ett tecken. Inlägget ovan är korrigerat.
MickeA.comMedlem sedan feb. 20034 528 inlägg
Peter S skrev:
Jag hade glömt att escape:a ett tecken. Inlägget ovan är korrigerat.
Aha, då får man tacka igen, provar när jag kommer hem i eftermiddag och återkommer!
MickeA.comMedlem sedan feb. 20034 528 inlägg
Peter S skrev:
Jag hade glömt att escape:a ett tecken. Inlägget ovan är korrigerat.
Tack, nu funkar jsfilen fullt ut igen, men i Mozilla finns fortf. en bugg.
Har man glömt en ruta så varnar den om det, precis som det ska vara. Men fyller man sedan i den (allt är då ifyllt) och trycker på submit så varnar den iaf. att rutan inte är ifylld.
Formuläret går således inte att posta.
Är det fortf. nått litet fel i koden?
Tack!
Peter SMedlem sedan dec. 20025 484 inlägg
Fungerar kanon för mig. Kanske fyller du i "förbjudna" tecken i rutan?
Jag har uppdaterat validate() litet grand ytterligare.
MickeA.comMedlem sedan feb. 20034 528 inlägg
Peter S skrev:
Fungerar kanon för mig. Kanske fyller du i "förbjudna" tecken i rutan?
Nä, klipper ut och klistrar in det som står.
Peter S skrev:
Jag har uppdaterat validate() litet grand ytterligare.
Jaha, får prova en sväng till, tack ;)
MickeA.comMedlem sedan feb. 20034 528 inlägg
Peter S skrev:
Kanske fyller du i "förbjudna" tecken i rutan?
Ahh, jobbigt, du har rätt, det finns - (bindestreck) med i rutorna. Har du lust att lägga till så att det får vara bindestreck samt 0-9 i "mItem_SE/EN" ?
Sen ska jag sluta gnälla ;)
Tack!
Peter SMedlem sedan dec. 20025 484 inlägg
MickeA.comMedlem sedan feb. 20034 528 inlägg
Peter S skrev:
Done!
Tack & Bock!
MickeA.comMedlem sedan feb. 20034 528 inlägg
Hmm, det stämmer fort. inte i FF.
I de svenska fälten får jag inte ange å, ä eller ö och i visningsordningsfälten får jag inte skriva '10'.
Det sistnämnda trodde jag att jag skulle klara av själv genom att byta ut [1-9] till [0-9], men det funkade inte :(
Peter SMedlem sedan dec. 20025 484 inlägg
Det fungerar för mig. Jag har uppdaterat inlägget ovan för att reflektera möjligheten att kunna ange högre tal än 9.