Avatar billede mite Nybegynder
08. september 2004 - 09:20 Der er 23 kommentarer og
1 løsning

Tomt felt i inputfelt

Hej eksperter

Jeg har en masse felter hvor der kun må indtastes tal (både negative og positive) og felterne må ikke være tomme når data accepteres ved tryk på en knap.
Det jeg selv har fundet ud af er følgende:

<input onblur=""if(isNaN(this.value))alert('Du kan kun indtaste tal.') || this.focus()"">

Feltet acceptere kun tal (negative og positive) men er ligeglad med om feltet er tomt. Jeg har prøvet en masse, men uden held. Håber der er en derude der lige kan ryste det ud af ærmet.

På forhånd tak.
Avatar billede eagleeye Praktikant
08. september 2004 - 09:27 #1
Prøv:

<input onblur=""if(isNaN(this.value)||this.value=='')alert('Du kan kun indtaste tal.') || this.focus()"">
Avatar billede eagleeye Praktikant
08. september 2004 - 09:35 #2
Men det ikke skrives sådan her:

<input onblur=""if(isNaN(this.value)||this.value==''){alert('Du kan kun indtaste tal.'); this.focus()};"">


Har du overvejet at lavet en funtion som bliver kaldt ud onSubmit i form tagen?



<script>
function valider(theform) {
  if (isNaN(theform.tal.value)||theform.tal.value=='') {
    alert("Du skal udfylde tal feltet!");
    theform.tal.focus();
    return false;
  }

return true;
}
</script>


og så formen:

<form method="post" onsubmit="return valider(this);" action="...">
<input type="text" name="tal">
..
..
</form>
Avatar billede mite Nybegynder
08. september 2004 - 09:42 #3
Den viker meget godt, men er der flere inputfelter gå der ged i den. Prøv at lave nogle sykker så vil du se problemet.
Avatar billede mite Nybegynder
08. september 2004 - 09:43 #4
Prøver lige den nye du har skrevet.
Avatar billede mite Nybegynder
08. september 2004 - 09:45 #5
Nej der sker stadig fejl. Den viser blot fejlmeddelelsen hele tiden.
Avatar billede eagleeye Praktikant
08. september 2004 - 10:02 #6
Så prøv at vise noget kode.
Avatar billede eagleeye Praktikant
08. september 2004 - 10:02 #7
har du rettet navnet på input feltet.
Avatar billede mite Nybegynder
08. september 2004 - 10:04 #8
her kommer koden:

                Do While Not rs.EOF
                    strSQL = "SELECT PID, point FROM points WHERE rundeNr=" &  cint(request.querystring("r")) & " AND spillerID=" & rs("spillerid") 
                    Set rsPoint = conn.Execute(strSQL)
                    If Not rsPoint.EOF Then
                        p = rsPoint("point")
                    else
                        p = ""
                    end if
                    arrPoint(i,0) = rs("spillerID")
                    arrPoint(i,1) = p
                    i = i+1
                    strHTML = strHTML & "<tr>"
                    strHTML = strHTML & "<td bgcolor=" & tblTDBgColor & "><a>" &  rs("spillerid") & "</a></td>"
                    strHTML = strHTML & "<td bgcolor=" & tblTDBgColor & "><a>" &  rs("spillernavn") & "</a>, " & rs("raekke") & "</td>"
                    strHTML = strHTML & "<td bgcolor=" & tblTDBgColor & "><input onblur=""if(isNaN(this.value)||this.value=='')alert('Du kan kun indtaste tal.'); this.focus()"" class=Inputfelt name=spid" & rs("spillerid") & " type=text size=5 style=height:18;font-size:10 value=" & p & "></td>"
                    strHTML = strHTML & "</tr>"
                    rs.MoveNext
                Loop
Avatar billede eagleeye Praktikant
08. september 2004 - 10:18 #9
prøv at rette:
strHTML = strHTML & "<td bgcolor=" & tblTDBgColor & "><input onblur=""if(isNaN(this.value)||this.value=='')alert('Du kan kun indtaste tal.'); this.focus()"" class=Inputfelt name=spid" & rs("spillerid") & " type=text size=5 style=height:18;font-size:10 value=" & p & "></td>"

til:

strHTML = strHTML & "<td bgcolor=" & tblTDBgColor & "><input onblur=""if(isNaN(this.value)||this.value=='')alert('Du kan kun indtaste tal.'); this.focus()"" class=Inputfelt name=""spid" & rs("spillerid") & """ type=""text"" size=""5"" style=height:18;font-size:10 value=" & p & "></td>"
Avatar billede mite Nybegynder
08. september 2004 - 10:24 #10
Nu acceptere feltet ingenting. Det var faktisk efter at jeg ændrede inputkoden første gang. Fejlmeddelelsen fremkommer uanset om det er tal eller ej.
Avatar billede eagleeye Praktikant
08. september 2004 - 10:26 #11
prøv at rette det til:

strHTML = strHTML & "<td bgcolor=" & tblTDBgColor & "><input onblur=""if(isNaN(this.value)||this.value==''){alert('Du kan kun indtaste tal.'); this.focus()}"" class=Inputfelt name=""spid" & rs("spillerid") & """ type=""text"" size=""5"" style=height:18;font-size:10 value=" & p & "></td>"
Avatar billede mite Nybegynder
08. september 2004 - 10:32 #12
Nu kan jeg godt indtaste tal uden fejlmeddelelse, men når jeg så bruger tabulator for at komme til næste felt kommer fejlmeddelelsen. Og fejlmeddelelsen kommer ikke væk selvom jeg trykker OK.
Avatar billede eagleeye Praktikant
08. september 2004 - 10:42 #13
Så skal der msåek ikke være ; immellem alert og focus prøv:

strHTML = strHTML & "<td bgcolor=" & tblTDBgColor & "><input onblur=""if(isNaN(this.value)||this.value==''){alert('Du kan kun indtaste tal.')  this.focus()}"" class=Inputfelt name=""spid" & rs("spillerid") & """ type=""text"" size=""5"" style=height:18;font-size:10 value=" & p & "></td>"
Avatar billede mite Nybegynder
08. september 2004 - 10:45 #14
Nu acceptere den også at der er tomt felt, bogstaver osv., dvs. ingen fejl meddelelser
Avatar billede eagleeye Praktikant
08. september 2004 - 11:01 #15
Hvad med at lave en funktion i stedet for.

<scritp>
function tjek(navn) {
  var str = document.getElementById(navn).value;
  if (isNaN(str) || str=='') {
    alert('Du kan kun indtaste tal.');
    document.getElementById(navn).focus();
  }
}
</script>


Så retter:
strHTML = strHTML & "<td bgcolor=" & tblTDBgColor & "><input onblur=""if(isNaN(this.value)||this.value==''){alert('Du kan kun indtaste tal.')  this.focus()}"" class=Inputfelt name=""spid" & rs("spillerid") & """ type=""text"" size=""5"" style=height:18;font-size:10 value=" & p & "></td>"

til:
strHTML = strHTML & "<td bgcolor=" & tblTDBgColor & "><input onblur=""tjek(this.name);"" class=Inputfelt name=""spid" & rs("spillerid") & """ type=""text"" size=""5"" style=height:18;font-size:10 value=" & p & "></td>"
Avatar billede mite Nybegynder
08. september 2004 - 11:46 #16
Det giver samme resultat som sidst. Fejlmeddelelse kan ikke komme væk.
Avatar billede eagleeye Praktikant
08. september 2004 - 11:56 #17
det forstår jeg ikek så må der være noget andet galt.

Prøv som test at tilføje en alert i funktion og se den skriver rigtigt navn og vlaue:

<scritp>
function tjek(navn) {
  var str = document.getElementById(navn).value;
  alert(navn + ' den value ' + str);
  if (isNaN(str) || str=='') {
    alert('Du kan kun indtaste tal.');
    document.getElementById(navn).focus();
  }
}
</script>
Avatar billede eagleeye Praktikant
08. september 2004 - 12:03 #18
arh problemt er når man sætter focus har det næste felt fået focus og så vil den så og hoppe imellem de to.
Avatar billede mite Nybegynder
08. september 2004 - 12:04 #19
Den skriver både navn "spid" og nr. på den spiller som skal have point.
Avatar billede mite Nybegynder
08. september 2004 - 12:04 #20
ja...det du skriver kl. 12:03:38 er lige præcis hvad der sker....er der en løsning på det?
Avatar billede eagleeye Praktikant
08. september 2004 - 12:12 #21
Ja måske jeg tror det vil være en godt i at flytte pspørgsmålet til javascript kategorien der er nok nogle som har en ide til løsningn.

Det eneste jeg kan komme med er at lave en funktion som ved onSubmit tjekker formen igennem. Problmet er det er en dynamisk form hvor man ikke nødvendigvis kender navnet på alle input felter.
Avatar billede mite Nybegynder
08. september 2004 - 12:28 #22
Lukker spørgsmål.
Avatar billede mite Nybegynder
08. september 2004 - 12:30 #23
Hvordan lukker jeg spørgsmålet???
Avatar billede eagleeye Praktikant
08. september 2004 - 12:54 #24
Du skal klikke på dit navn i listen over dem som har svaret, også selvom du er den eneste, så trykke Accepter.
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
Kurser inden for grundlæggende programmering

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