hej, jag är en glad amatör som håller på att pula med ett forum. Önskar att få hjälp med att kunna beräkna längden på varje ord i en TextArea så man inte kan skriva in typ: Hej, Jag har snickar ihop ett förslag till dig: Detta kanske kan vara till hjälp:hjälp med text-kontroll.
tjena jag heter Greger Grovsoooooooooooooooooooooooooooooooooooopaaaaaaa
för att bla bla bla.
och därmed spränga tabeller när meningen sedan presenteras på sidan.
jag antar att jag ska loopa igenom inehållet och använda denhäringa "Len" men vet inte hur syntaxen ser ut...Sv: hjälp med text-kontroll.
Ett tips kan ju vara att ha en Int variabel som längden av texten i textboxen skall jämföras mot med hjälp av en If-sats.
Visst finns det kod för detta.
Men eftersom det finns så många sätt att göra detta på och jag inte vet vad som skall ske därefter, så tror jag nog att du fixar kod snutten själv.
Dim minIntvariabel som Integer
Sätt ett initialt värde på ovanstående variabel
Här kan du sedan börja kontrollen av antal tecken i textboxen.
mvh
NicholasSv: hjälp med text-kontroll.
<code>
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<%
'--- kontrollerar att formuläret är skickat
If Request("Action") = "SentForm" Then
'--- deklarerar variabler
Dim sText 'string
Dim iText 'integer
Dim iMaxTextLength 'integer
Dim aText 'array
Dim iMaxWordLength 'integer
Dim aTextLength 'array
Dim iCounter 'integer
Dim sErrorMessage 'string
Dim sErrorMessageBox 'string
'--- hämtar text från formuläret
sText = Trim(Request.Form("MittTextAreaNamn"))
'--- tar reda på hur lång all text är (antal tecken + mellanslag)
iText = Len(sText)
'--- anger maxvärde för hur lång texten får lov att vara
iMaxTextLength = 20
'--- splittar text vid varje mellanslag
aText = Split(sText, " ")
'--- anger maxvärde för hur långt ett ord får lov att vara
iMaxWordLength = 5
'--- hur många ord som finns i textmassan
aTextLength = UBound(aText)
'--- börjar med att kontrollerar längd på hela textmassan
If iText > iMaxTextLength Then
'--- om man vill använda sig av text för felmeddelande
sErrorMessage = "<strong>Texten är för lång (" & iText & " tecken), du kan max använda: " & iMaxTextLength & " tecken (inklusive mellanslag).</strong><br>"
'--- om man vill använda sig av alert-ruta (javascript) för felmeddelande
sErrorMessageBox = "Texten är för lång (" & iText & " tecken), du kan max använda: " & iMaxTextLength & " tecken (inklusive mellanslag).\n"
End If
'--- loopar igenom texten
For iCounter = 0 To aTextLength
If Len(aText(iCounter)) > iMaxWordLength Then
'--- om man vill använda sig av text för felmeddelande
sErrorMessage = sErrorMessage & "<strong>Ordet: " & aText(iCounter) & " är för långt (" & (Len(aText(iCounter))) & " tecken), du kan max använda: " & iMaxWordLength & " tecken i varje ord.</strong><br>"
'--- om man vill använda sig av alert-ruta (javascript) för felmeddelande
sErrorMessageBox = sErrorMessageBox & "Ordet: " & aText(iCounter) & " är för långt (" & (Len(aText(iCounter))) & " tecken), du kan max använda: " & iMaxWordLength & " tecken i varje ord.\n"
End If
Next
'--- om man vill använda sig av text för felmeddelande
If sErrorMessage <> "" Then
Response.Write "<h2>Följande fel har inträffat!</h2><p>" & sErrorMessage & "<br>Var vänlig och försök igen"
End If
'--- om man vill använda sig av alert-ruta (javascript) för felmeddelande
If sErrorMessageBox <> "" Then
Response.Write "<script>alert('Följande fel har inträffat!\n\n" & sErrorMessageBox & "\nVar vänlig och försök igen');</script>"
End If
End If
%>
<html>
<head>
<title>Test av text</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<form name="frmText" method="post" action="testform.asp?Action=SentForm">
<textarea name="MittTextAreaNamn" rows="10" cols="50"></textarea>
<input type="submit" name="Submit" value="Skicka">
</form>
</body>
</html>
</code>
Hoppas det smakar!Sv: hjälp med text-kontroll.
<code>
Function SplitRow(Row, Max)
Dim Start
Dim Index As Long
Start = 1
For Index = 1 To (Len(Row) - 1) \ Max
SplitRow = SplitRow & Mid(Row, Start, Max) & vbCrLf
Start = Start + Max
Next
SplitRow = SplitRow & Mid(Row, Start)
End Function
Public Function LimitRow(Text, Max)
Dim Rows
Dim Index
If Max >= 1 Then
Rows = Split(Text, vbCrLf)
For Index = 0 To UBound(Rows)
Rows(Index) = SplitRow(Rows(Index), Max)
Next
LimitRow = Join(Rows, vbCrLf)
Else
LimitRow = Text
End If
End Function
</code>
Anropa LimitRow() med önskat antal tecken du vill ha i bredd så bryter den om en rad överstiger den bredden.