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();
}
}
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.
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();
}
}
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å;
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).
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;
}