Just nu i M3-nätverket
Gå till innehåll
inka6

Inte tillåta tecknet '

Rekommendera Poster

Hej!

en kanske dum fråga...jag vill att detta tecken ' inte ska accepteras i ett formulär.

 

Har en javascriptkontroll som kollar siffror, kan jag i denna funktion även lägga in att den kontrollerar så att inte tecknet ' finns med

 

 

   function kollasiffror (str)
   {
     var index;
     for (index = 0; index < str.length; ++index)
       if ('0123456789-/"'.indexOf (str.substring
           (index, index + 1)) == -1)
         return false;




     return true;
   }

 

 

Tacksam för kodförslag!

 

[inlägget ändrat 2008-03-31 08:33:23 av inka6]

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Den kontrollerar ju redan så att enbart de tecken du angett existerar, eftersom enkelfnutt inte finns med där tillåts den ju redan inte.

Dock kan du förenkla din funktion med en regex-test istället:

function kollasiffror(str) {
	var re = new RegExp("[^0-9\-\/]");
	return(re.test(str));
}

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Ok, tack, om jag istället vill ha en egen funktion som enbart kollar om fnutt finns, hur skriver man bäst då?

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Är så kass på detta (sorry att jag inte förstår!), får det inte att fungera....

 

  <script language="Javascript">
<!--

   function kollafnutt(str) 
{
return(str.indexOf("'")>-1);

}
//-->
 </script>

 

Anropar den sedan som

onSubmit="return kollafnutt (str);

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Det jag vill är att kontrollera alla fält i formuläret (oavsett antal) om det finns enkelfnutt innan formuläret skickas

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Då hade jag loopat igenom formulärfälten och kollat värdena för var och en.

Träffar den på en fnutt så sätt en variabel till true(som är false till en början).

Kolla sen värdet på variabeln efter loopen och bestäm vad som ska retuneras.

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

function formIsFreeFromQuotes() {
quotesFound=false;
flds=document.getElementsByTagName('INPUT');
for (i=0;i<flds.length;i++) {
	fld=flds[i];
	quotesFound=quotesFound || (fld.type=='text' && fld.value.indexOf("'")>-1) 
}
return !quotesFound;
}

 

och i FORM lägger du in

onsubmit="return(formIsFreeFromQuotes());"

 

Men har du fler checkar än bara efter citattecken så måste du ju förstås slå ihop dessa i onsubmit.

 

Är kontrollen till för att förhindra sql-injections så är den rätt meningslös att ha på klientsidan, eftersom du fortfarande måste använda en säker metod på serversidan. Varför inte bara filtrera bort enkelfnuttar efter att formuläret postats?

 

[inlägget ändrat 2008-03-31 10:24:27 av Anjuna Moon]

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Ok, tack, hur gör man för att filtrera bort enkelfnuttarna?

Med en vanlig replace på server-sidan, hur du gör detta beror ju på server-språk.

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Men då måste jag fylla i för varje fältnamn, eller? Och det vill jag inte, jag vill att den kollar i alla fält (oavsett antal) och excluderar enkelfnutt.

 

Sätter jag denna kodsträng överst i ASP-filen och vad står ordet data för?

 

Sorry för alla mins kontiga frågor :)

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Men då måste jag fylla i för varje fältnamn, eller?

Jamen på serversidan måste du ju i vilket fall behandla varje fält för sig, eller vad gör du med datan egentligen. Hursomhelst har detta ramlat bort från både ämnet och forumtillhörighet.

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Du har ju även på serversidan möjlighet att loopa igenom formulärets element och kolla des värde eller replace:a fnuttar i värden/strängen.

Kolla in

For Each fält In Formlär

...

Next

 

Men som Anjuna säger är det Asp det nu handlar om, och ett tips till andra som läser denna tråd är att FÖRST göra kollen på serversidan!

SEN, om man nu inte vill att dem flesta ska belasta servern innan en "förstakoll", använder man javascript.

Sen är där ju några som inte tillåter javascript och dem "går förbi förstakollen" och Därför SKA man första göra kollen på serversidan.

 

[inlägget ändrat 2008-03-31 11:13:59 av Micke_skane]

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Men om man går tillbaka till javascript, kan man använda sig av en funktion med replace i javscript som ersätter enkelfnutt med blanksteg?

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

function removeQuotes() {
flds=document.getElementsByTagName('INPUT');
for (i=0;i<flds.length;i++) {
	fld=flds[i];
	if (fld.type=='text') fld.value=fld.value.replace("'"," "); 
}
}

 

och i FORM

onsubmit="removeQuotes();"

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Jag får det bara att fungera att det första fältet tömms från fnuttar.

 

Är det för att jag la in en return true i slutet av funktionen?

 

Om jag inte har true så måste jag klicka två ggr på sendknappen för att det ska fungera...

[inlägget ändrat 2008-03-31 12:36:38 av inka6]

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Jag använde ett dåligt replace-uttryck, det blev inte globalt. Ändra funktionen till

	function removeQuotes() {
	flds=document.getElementsByTagName('INPUT');
	for (i=0;i<flds.length;i++) {
		fld=flds[i];
		if (fld.type=='text') fld.value=fld.value.replace(/'/ig," "); 
	}
}

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Känns lite dumt att ersätta fnuttarna med mellanslag, tänk om någon skriver in ofattbart många fnuttar efter varandra.

Då kommer du att få stora mellanrum mellan orden.

 

Jag hade ersatt dem med ""(inget).

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

får det inte riktigt att fungera ändå, måste klicka två ggr på sendknappen för att få det att fungera...tror det är mitt anrop det är fel på...

 

onSubmit="return kollaformularet(this) && removeQuotes() && maila();" >

 

Om jag vill ha in samma funktion på en textarea, hur läggar man lättast in det?

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

1. maila() vet jag inte ens vad den gör, men det låter inte som en kontrollfunktion och skall därför inte ingå i returvärdet i OnSubmit

2. Min funktion skall inte ingå i returvärdet i OnSubmit

 

Pröva med:

onSubmit="removeQuotes(); maila(); return(kollaformularet(this));" >

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

function removeQuotes() {
var txtfld=document.getElementById("textareaId");
	flds=document.getElementsByTagName('INPUT');
	for (i=0;i<flds.length;i++) {
		fld=flds[i];
		if (fld.type=='text') fld.value=fld.value.replace(/'/ig," "); 
	}
txtfld.value=txtfld.value.replace(/'/ig," ");
}

onSubmit="removeQuotes();maila();return kollaformularet(this)>

Jaha, Anjuna hade inte heller något att göra just nu ;)

 

[inlägget ändrat 2008-03-31 13:16:27 av Micke_skane]

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Skapa ett nytt konto på vårt forum. Det är lätt!

Registrera ett nytt konto

Logga in

Redan medlem? Logga in här.

Logga in nu



×
×
  • Skapa nytt...