Just nu i M3-nätverket
Jump to content

Inte tillåta tecknet '


inka6

Recommended Posts

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]

Link to comment
Share on other sites

Anjuna Moon

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));
}

 

Link to comment
Share on other sites

Ä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);

 

Link to comment
Share on other sites

Micke_skane

Var kommer värdet i str ifrån i följande anrop?

onSubmit="return kollafnutt (str);

 

Link to comment
Share on other sites

Anjuna Moon
onSubmit="return kollafnutt (str);"

Har du något värde på str då? Varför gör du kontroll efter enkelfnutt här?

 

Link to comment
Share on other sites

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

 

Link to comment
Share on other sites

Micke_skane

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.

 

Link to comment
Share on other sites

Anjuna Moon

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]

Link to comment
Share on other sites

Anjuna Moon
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.

 

Link to comment
Share on other sites

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 :)

 

Link to comment
Share on other sites

Anjuna Moon
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.

 

Link to comment
Share on other sites

Micke_skane

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]

Link to comment
Share on other sites

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?

 

Link to comment
Share on other sites

Anjuna Moon

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();"

 

Link to comment
Share on other sites

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]

Link to comment
Share on other sites

Anjuna Moon

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," "); 
	}
}

 

Link to comment
Share on other sites

Micke_skane

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).

 

Link to comment
Share on other sites

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?

 

Link to comment
Share on other sites

Anjuna Moon

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));" >

 

Link to comment
Share on other sites

Micke_skane

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]

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...