webForumDet fria alternativet

problem med komma i if-sats

10 svar · 566 visningar · startad av urban_hahne

urban_hahneMedlem sedan maj 2003153 inlägg
#1

Jag vill kolla om det finns ett komma i texten
Varför funkar inte detta:

if (charge1Tmp != ",") {.......

när detta funkar:

if (charge1Tmp != "A") {.......

hur skriver jag komma på annat sätt för att få det att funka?
mvh
Urban

stattinMedlem sedan jan. 2005713 inlägg
#2

om texten innehåller komma


if(charge1Tmp.indexOf(",") != -1)

eller om texten inte innehåller ett komma:


if(charge1Tmp.indexOf(",") [B]==[/B] -1)

borde funka..

urban_hahneMedlem sedan maj 2003153 inlägg
#3

NOP. funkade inte. Bokstäver funka men inte vissa specialtecken. I asp skriver man ju ofta chr(asciivärdet) när man vill jämföra specialtecken. t.ex if variabelA=CHR(44) then .....
vad är motsvarigheten i javascript.

Peter SMedlem sedan dec. 20025 483 inlägg
#4
String.fromCharCode(65);

Vad är egentligen charge1Tmp?

stattinMedlem sedan jan. 2005713 inlägg
#5

du måste ha någe diverse special fuffens för dig.. :)

65 vart ju A var det inte komma tecknet han skulle åt??

just ja.. 44.. :x

Peter SMedlem sedan dec. 20025 483 inlägg
#6

Jo, jag gav bara ett exempel. Jag utgår från att Urban klurar ut vad som behöver ändras.

urban_hahneMedlem sedan maj 2003153 inlägg
#7

Jag får det inte att funka. Vad jag vill är att validera ett fält som får innehålla ett decimaltal med eller utan minustecken och med antingen ett decimalkomma eller en decimalpunkt.
Koden ser ut så här när den funkar för att godkänna talet med decimalpunkt och minustecken. Men jag vill även kunna skriva decimalkomma utan att få felmeddelande.

function checkCharge1(){		
		var charge1Tmp=document.newManifestForm3.charge1.value;			
		if (charge1Tmp != "-"){ 		
		if(isNaN(charge1Tmp)){
		alert("Amount 1 have to be a value with or without decimal point!");			
		charge1Tmp=charge1Tmp.substring(0,charge1Tmp.length-1);					
		document.newManifestForm3.charge1.value=charge1Tmp;	
		}
		}
		document.newManifestForm3charge1.value=charge1Tmp;							
		}

hur gör jag?

Peter SMedlem sedan dec. 20025 483 inlägg
#8

Enklast är kanske att använda ett regexp

function checkCharge1()
{
  var val = document.newManifestForm3.charge1.value.replace(/,/g, ".");
  if (/^-?\d+\.\d+$/.test(val)){
    alert("input okay");
  } else {
    alert("input not okay");
  }
}
urban_hahneMedlem sedan maj 2003153 inlägg
#9

Det ser komplicerat utmed all / \ m.m kan man få en enkel förklaring om vad allt står för. Jag har lite svårt för att använda kod som jag inte förstår. Även om den funkar. Kanske det finns någon bra länk till lite mer info.

Peter SMedlem sedan dec. 20025 483 inlägg
#10

Den teknik som utnyttjas kallas regular expressions. Ett försök till förklaring följer:

function checkCharge1()
{
  var val = document.newManifestForm3.charge1.value.replace(/,/g, "."); //ersätt alla , med . och spara resultatet i val

  //här undersöker vi innehållet i val
  //^   matcha början av val
  //-?  matcha ett eller inget minustecken
  //\d+ matcha en eller flera siffror
  //\.  matcha en punkt
  //\d+ matcha en eller flera siffror
  //$   matcha slutet av val 
  if (/^-?\d+\.\d+$/.test(val)){
    alert("input okay");
  } else {
    alert("input not okay");
  }
}
urban_hahneMedlem sedan maj 2003153 inlägg
#11

Kanonbra! Med din hjälp och med bra info från
http://www.javascriptkit.com/javatutors/re.shtml
står det helt klart. En får tacke.

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