Dette skulle så gerne valideres i: <script language=javascript> function ValiderInput(){ if(indholdet af txtnummer er indeholdt i array){ alert("Du skal vælge et nummer der ikke er brugt"); return false; } else{ return true; } } </script>
Mit første problem består i, at jeg ikke kan få 'overført' mit array til mit javascript-script, og derfor heller ikke kan teste mod det.
<script language=javascript> function ValiderInput(formInput){ var aryNumbers=new Array(); <% dim strArr (4) strArr(0) = "1" strArr(1) = "2" strArr(2) = "3" strArr(3) = "4" strArr(4) = "6" For row = 0 To uBound(strArr) Response.Write "aryNumbers[" & row & "]='" & strArr(row) & "';" & vbcrlf Next %> for (i in aryNumbers) { if (formInput == aryNumbers[i]) { alert("Du skal vælge et nummer der ikke er brugt"); return false; } } return true; } </script>
OK, så langt så godt. Som du måske har gættet så skal mit array fyldes med indholdet af en database, hvilket jeg fint kan få til at fungere. Der er bare lige det prblem, at jeg ikke kan få defineret størrelsen af strArr til antallet af records. Ved du hvordan?
Du behøver i princippet ikke at dim'e arrayet - det er bare god skik. Hvis du vil dim'e, kan du få antal records fra dit recordset. Måden afhænger af hvordan du laver recordset'et
**** START **** <!--#include file="include/connection.asp"--> <html> <head> </head> <script language=javascript> function ValiderInput(formInput){ var aryNumbers=new Array(); <% strSQL = "SELECT * FROM tbltest" set rs = conn.execute(strSQL)
' Dim strArr(4) For i = 0 To 4 strArr(i) = rs("uid") rs.movenext Next For row = 0 To uBound(strArr) Response.Write "aryNumbers[" & row & "]='" & strArr(row) & "';" & vbcrlf Next %> for (i in aryNumbers) { if (window.document.minform.txtnummer.value == aryNumbers[i]) { alert("Du skal vælge et nummer der ikke er brugt"); return false; } } return true; } </script><body> <center> <br><br><br> <form action="test.asp?action=do" name=minform method=post onsubmit="return ValiderInput(this);"> <input type=text name=txtnummer size=4> <input type=submit value='Do'> <input type=submit value='Slet' onclick="return confirm('Er du sikker på at du vil slette?');">
</form> </body> </html> <!--#include file="include/close.asp"--> **** SLUT ****
Hvis jeg fjerner 'Dim strArr(4)' så loader den ikke hele siden. (min form vises ikke). Hvis jeg prøver med: strAntal = "SELECT COUNT(*) AS antal FROM tbltest" set rAntal = conn.execute(strSQLAntal)
dim strArr (rsAntal("antal"))
så får jeg en fejl, der indikerer at browseren forventede en int. konstant
Jeg har alene brug for at hente en kolonne fra min database. Eksemplet ovenfor er kun det; et eksempel. Til det egentlige brug vil mit SQL kald være: "select medlemsnr from medlemmer order by medlemsnr" medlemsnr er et tre-cifret tal.
<!--#include file="include/connection.asp"--> <html> <head> </head> <script language=javascript> function ValiderInput(){ var aryNumbers=new Array(); <% strSQL = "SELECT medlemsnr FROM medlemmer order by medlemsnr" set rs = conn.execute(strSQL)
strArr = rs.GetRows() For row = 0 To uBound(strArr) Response.Write "aryNumbers[" & row & "]='" & strArr(row) & "';" & vbcrlf Next %> for (i in aryNumbers) { if (window.document.minform.txtnummer.value == aryNumbers[i]) { alert("Du skal vælge et nummer der ikke er brugt"); return false; } } return true; } </script><body> <center> <br><br><br> <form action="test.asp?action=do" name=minform method=post onsubmit="return ValiderInput(this);"> <input type=text name=txtnummer size=4> <input type=submit value='Do'> </form> </body> </html> <!--#include file="include/close.asp"-->
Men med samme problem; hvis jeg ikke definerer strArr, så loades siden ikke.
Du kan evt. bruge getRows metode til automatisk at omdanne dit recordset til et array:
If Not rs.EOF Then aryRecordset = rs.getrows() If isarray(aryRecordset) Then For intCount = 0 to ubound(aryRecordset,2) Response.Write "aryNumbers[" & row & "]='" & aryRecordset(row) & "';" & vbcrlf Next End If End If
If Not rs.EOF Then aryRecordset = rs.getrows() If isarray(aryRecordset) Then For row = 0 to ubound(aryRecordset,2) Response.Write "aryNumbers[" & row & "]='" & aryRecordset(0,row) & "';" & vbcrlf Next End If End If
Her er en køreklar kode (du skal blot rette databasesti, tabel og feltnavn)
<html> <head> <script language=javascript> function ValiderInput(formInput){ var aryNumbers=new Array(); <% Set Conn = Server.Createobject("ADODB.Connection") strConnection = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\Documents and Settings\Administrator\Skrivebord\login\users.mdb; Persist Security Info=False" Conn.Open strConnection strSQL = "SELECT * FROM admin" set rs = conn.execute(strSQL) If Not rs.EOF Then aryRecordset = rs.getrows() If isarray(aryRecordset) Then For row = 0 to ubound(aryRecordset,2) Response.Write "aryNumbers[" & row & "]='" & aryRecordset(0,row) & "';" & vbcrlf Next End If End If Set rs = Nothing Conn.close Set Conn = Nothing %> for (i in aryNumbers) { if (formInput == aryNumbers[i]) { alert("Du skal vælge et nummer der ikke er brugt"); return false; } } alert("OK"); return true; } </script> </head> <body> <form name="minform" action="" onsubmit="return ValiderInput(this.txtnummer.value);" method=post> <input type="text" name="txtnummer"> <input type=submit value=Udfør> </form> </body> </html>
Et opfølgende spørgsmål (hvis du orker): Hvis jeg definerer en variable uden for en function, kan jeg så ikke bruge den inde i? Jeg har gentagne gange oplevet at jeg var nødt til at definere den flere gange. Fx en upload sti.
var aryNumbers=[ <% Set Conn = Server.Createobject("ADODB.Connection") strConnection = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\Documents and Settings\Administrator\Skrivebord\login\users.mdb; Persist Security Info=False" Conn.Open strConnection strSQL = "SELECT * FROM admin" set rs = conn.execute(strSQL) If Not rs.EOF Then aryRecordset = rs.getrows() If isarray(aryRecordset) Then For row = 0 to ubound(aryRecordset,2) Response.Write aryRecordset(0,row) & "," & vbcrlf Next End If End If Set rs = Nothing Conn.close Set Conn = Nothing %> ]
Hvis det bare er et array af tal !-)
Dvs. at din løsning, som du havde i spørgsmålet, kun havde een fejl, nemlig at du havde brugt "" ...
Hvis du havde brugt [] havde det virket !-)
Synes godt om
Ny brugerNybegynder
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.