webForumDet fria alternativet

Enter

11 svar · 353 visningar · startad av danielpetersson

danielpeterssonMedlem sedan apr. 2002123 inlägg
#1

Hej!

Undrar hur man skriver i en JavaScript-funktion för att kunna kontrollera även det inmatade när användaren tryckt på enter i text-fältet? Det ska alltså ske samma sak när användaren tryckt enter eller användaren tryckt på sök-knappen. Som det är nu så "submittas" formuläret om användaren tryck enter oberoende vad användaren skrivit i textfältet.
Koden ser ut enligt följande:

function siffra(str)
{
for (index=0;index<str.length;++index)
if ('0123456789'.indexOf
(str.substring(index, index + 1)) == -1)
return false;
return true;
}

function sifferKoll()
{
if (!siffra (searchForm.searchText.value))
alert ("Inga bokstäver och mellanslag i artikelnumret!");
else if (document.searchForm.searchText.value.length < 2)
alert("För få tecken");
else
{
document.searchForm.submit();
}
}

<FORM method="post" onSubmit="sifferKoll()" target="resultat" name="searchForm">
<input type="text" name="searchText" size="15" maxlength="30">
<input type="button" name="searchButton" value=" Sök " onClick="sifferKoll()">
</FORM>

JojoxxMedlem sedan juni 20004 308 inlägg
#2

Använd onSubmit="return sifferKoll()" och sedan returnerar du false om något inte stämmer (bokstäver, för få tecken etc.) och true om allt är ok. document.searchForm.submit(); kan du således plocka bort -- det fyller ingen funktion.

danielpeterssonMedlem sedan apr. 2002123 inlägg
#3

Vet inte hur det går till men det verkar som den hoppar över "return false" när man trycker enter. Det blir nämligen samma resultat som innan. Alertmeddelandet om för få tecken etc.. fungerar alltså men formuläret skickas ändå.
Koden ser nu ut enlig följande:

function siffra(str)
{
for (index=0;index<str.length;++index)
if ('0123456789'.indexOf
(str.substring(index, index + 1)) == -1)
return false;
return true;
}

function sifferKoll()
{
if (!siffra (searchForm.searchText.value))
{
alert ("Inga bokstäver och mellanslag i artikelnumret!");
return false;
}
else if (document.searchForm.searchText.value.length < 2)
{
alert("För få tecken");
return false;
}
else
{
document.searchForm.action="sokningsresultat.asp"
document.searchForm.submit();
}
}

<FORM method="post" onSubmit="return sifferKoll()" target="resultat" name="searchForm">
<input type="text" name="searchText" size="15" maxlength="30">
<input type="button" name="searchButton" value=" Sök " onClick="sifferKoll()">

Meningen är att om användaren trycker på enter eller sök-knappen så ska exakt samma sak ske, men det gör det tyvärr inte nu.

JojoxxMedlem sedan juni 20004 308 inlägg
#4

Funkar när jag testar det. Däremot måste du ha en submit-knapp med i formuläret som det skall fungera att trycka enter i text-fältet. I stället för type="button" alltså;

<input type="submit" name="searchButton" value=" Sök ">

danielpeterssonMedlem sedan apr. 2002123 inlägg
#5

Funkar fortfarande inte. Formuläret skickas alltid när jag trycker på enter. Fattar ingenting just nu.

Väldigt tacksam för hjälp.

JojoxxMedlem sedan juni 20004 308 inlägg
#6

Kan du skicka en länk till sidan i fråga?

danielpeterssonMedlem sedan apr. 2002123 inlägg
#7

Du kan gå in på 194.47.40.136 men det kommer inte att vara igång så jättelänge. Testa att söka på t ex artikelnummer 99 genom enter och knappen.

JojoxxMedlem sedan juni 20004 308 inlägg
#8

I formuläret använder du onSubmit="koll();". Du måste returnera false för att formuläret inte skall skickas. Alltså skall det vara onsubmit="return koll();". Inte heller funktionen koll() returnerar någonting. Vill du att svaret från textKoll(); och sifferKoll(); skall returneras från funktionen koll (och i sin tur från eventet onSubmit) måste du använda return textKoll(); och return sifferKoll();. Åter igen, även dessa funktioner måste returnera något, alltså efter alert-satserna som talar om att något är fel måste du ha med return false (och sist i funktionen om allt är ok return true).

danielpeterssonMedlem sedan apr. 2002123 inlägg
#9

Problemet är löst.
Tack så hemskt mycket!

danielpeterssonMedlem sedan apr. 2002123 inlägg
#10

Jag har även problem med min sökfunktion när man söker på ett namn. Jag gör om allt som är infört i textfältet till stora bokstäver, men av någon konstig anledning så görs inte den inmatade strängen om till stora bokstäver om man trycker på enter-knappen i text-fältet. Alltså det funkar som det ska när användaren trycker på sök-knappen, men inte när användaren trycker på enter-knappen.
Så här ser koden ut:

function bokstav(str)
{
for (index=0;index<str.length;++index)
if ('abcdefghijklmnopqrstuvwxyzåäöABCDEFGHIJKLMNOPQRSTUVXYÅÄÖ0123456789/*- '.indexOf
(str.substring(index, index + 1)) == -1)
return false;
return true;
}

function textKoll()
{
var temp;
temp = searchForm.searchText.value;
document.searchForm.searchText.value = upperCase(searchForm.searchText.value);
document.searchForm.action = "sokningsresultat.asp"
document.searchForm.submit();
document.searchForm.searchText.value = temp;
return true;
}

function upperCase(str)
{
var str;
str = document.searchForm.searchText.value.toUpperCase();
return str;
}

<FORM method="post" onSubmit="return textKoll()" target="resultat" name="searchForm">
<INPUT type="text" name="searchText" size="15" maxlength="30">
<INPUT type="button" name="searchButton" value=" Sök " onClick="textKoll()">
</FORM>

Tacksam för ideér.

JojoxxMedlem sedan juni 20004 308 inlägg
#11

Du har mycket onödig och redundant kod. Använd detta i text-fältet istället.

<INPUT type="text" name="searchText" size="15" maxlength="30" onKeyup="this.value=this.value.toUpperCase();">
danielpeterssonMedlem sedan apr. 2002123 inlägg
#12

Tack än en gång, Jojoxx!

134 ms totalt · 3 externa anrop · v20260731065814-full.0e50b1ef
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)