webForumDet fria alternativet

AJAX

.NET

1 svar · 528 visningar · startad av devotion

Medlem sedan jan. 20013 582 inlägg
Frågan#1

Hej!

Jag har följande script på en html-sida:

<SCRIPT language='vbscript'>
	'*********************************
	' KOPIERAD FRÅN UN_GLOBAL.VBS:
	' Return a value from an SQL SELECT query to Uppdrag NU db
	'*********************************
	function GetUNValue(sSQL)
		dim Conn, Rs
		Set Conn=CreateObject("ADODB.Connection")
		Conn.Open "<% =Application.sDbConnectionString %>"
		Set Rs=CreateObject("ADODB.Recordset")
		Rs.Open sSQL, Conn
		if Rs.EOF then
			GetUNValue=""
		else
			GetUNValue=Rs.Fields(0)
		end If
		Rs.Close
		Set Rs=Nothing
		Set Conn=Nothing
	end function

	sub OnValidateArtNr(nIndex)
		dim sArtNr, sArtName

		sArtNr=document.all.item("article" & nIndex).value
		if sArtNr="" then 
			document.all.item("artname" & nIndex).innerHtml="(ingen artikel vald)"
			exit sub
		end if

		sArtName=GetUNValue("SELECT [Name] FROM [tblArticle] WHERE [Nr]='" & sArtNr & "'")
		sUnit=GetUNValue("SELECT [Unit] FROM [tblArticle] WHERE [Nr]='" & sArtNr & "'")
		if sArtName="" then 
			' MsgBox "Artikeln '" & sArtNr & "' finns inte."
			document.all.item("artname" & nIndex).innerHtml="<font color='#ff0000'>(felaktigt artikelnr)</font>"
		else
			document.all.item("artname" & nIndex).innerHtml=sArtName
			document.all.item("unit" & nIndex).value=sUnit
		end if
	end sub
	
	sub OnSave()
		dim i
		dim sArtNr, fAmount, sUnit, sPLNr, fPrice
		dim s
	
		sPLNr=document.all.item("supplier").value

		s=""
		for i=1 to 10
			sArtNr=document.all.item("article" & i).value
			fAmount=document.all.item("amount" & i).value
			sUnit=document.all.item("unit" & i).value
			if sArtNr<>"" then
				fPrice=GetUNValue("SELECT TOP 1 [Price] FROM [tblPrice] WHERE [Type]=4 AND [PriceListNr]='" & sPLNr & "' AND [ArtNr]='" & sArtNr & "' AND [FromAmount]<=" & fAmount & "ORDER BY [FromAmount] DESC")
				if not IsNumeric(fPrice) then fPrice=0
				s = s & "Lägg till " & fAmount & " " & sUnit & " av artikelnr " & sArtNr & ", pris " & fPrice & " kr" & Chr(13) & Chr(10)
			end if
		next
		MsgBox s
	end sub
</SCRIPT>

Den övriga koden på sidan ser ut så här:

<body bgcolor='#<COLOR_3DFACE>'>

<h1>Registrera materialrader för uppdrag: <% =GetUNValue("SELECT [TaskNr] FROM [tblTask] WHERE [Id]=<TaskId>") %></h1>

<form name='myform' action="javascript:OnSave()" method="post">

<label>Välj leverantör: 

<%
Dim objConn, objRS, sSQL

Set objConn = CreateObject( "ADODB.Connection" )
objConn.Open Application.sDbConnectionString
Set objRs = CreateObject( "ADODB.Recordset" )

sSQL = "SELECT * FROM tblPricelist ORDER BY [Name]"
Set objRS = objConn.Execute (sSQL)

Response.write "<select name=""supplier"">"

while not ObjRS.EOF
    sName = objRS("Name")
    sPriceListNr = objRS("Nr")
    Response.write "<option value=" & sPriceListNr & ">" & sName & "</option>" 
objRS.Movenext
wend
Response.write "</select>"

objRS.Close
Set objRS = Nothing

Response.write "</label>"
Response.write "<p>"

for i = 1 to 10
    Response.write "<label>Artikelnummer: <input name=""article" & i & """ onblur='OnValidateArtNr(" & i & ")'></label>"
    
    Response.write "<label>Antal: "
    Response.Write "<select name=""amount" & i & """ id=""amount" & i & """>"
       
        for i2 = 1 to 100
            Response.Write "<option value=""" & i2 & """ "
            Response.Write ">" & i2 & "</option>" & vbCrLf
        next
    Response.write "</select>"
    Response.write "</label>"
    Response.write "<label>Enhet: "
    Response.write "<select name=""unit" & i & """>"
        Response.write "<option value=""st"">styck</option>"
        Response.write "<option value=""m"">meter</option>"
    Response.write "</select>"
	Response.Write "&nbsp;&nbsp;<label id='artname" & i & "'>(ingen artikel vald)</label>"
    Response.write "<p>"
Next
%>
<input name="addArticles" type="submit" value="Lägg till">
</form>
<%
objConn.Close
Set objConn = Nothing
%>
</body>

Det fungerar som så att när man lämnar textfältet så slås artikeln upp i databasen. Se bifogad bild. Kan man göra så att sökningen börjar direkt när man börjar skriva?

Så när inget text skrivits står det "Ingen artikel vald"
När man skrivit ett felaktigt nummer visas "Felaktigt artikelnummer"
När man till slut kommer till ett nummer som finns i databasen visas benämningen. Det kan väl liknas AJAX...

Mvh
Henrik

ajax.png
Medlem sedan jan. 20013 582 inlägg
#2

Använde:

onKeyUp

istället för:

onBlur

Och det verkar ju funka...

276 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
139 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)