webForumDet fria alternativet
Logga in / Bli medlem

funkar i IE men inte FF

JavaScript

9 svar · 368 visningar · startad av pb81

Medlem sedan okt. 200688 inlägg
Frågan#1
function ValidateChange(orderAmount,newAmount,Curr,P37)
{	
	var strNewAmount = newAmount;
	
	if (IsNumeric(strNewAmount) == true)
	{
		if (strNewAmount.length != 0)
		{
				
			dot = ".";
			comma = ",";

				
			while (strNewAmount.indexOf(comma)>-1) {
				pos = strNewAmount.indexOf(comma);
				strNewAmount = "" + (strNewAmount.substring(0, pos) + dot + 
				strNewAmount.substring((pos + comma.length), strNewAmount.length));
			}
				
			while (orderAmount.indexOf(comma)>-1) {
				pos = orderAmount.indexOf(comma);
				orderAmount = "" + (orderAmount.substring(0, pos) + dot + 
				orderAmount.substring((pos + comma.length), orderAmount.length));
			}
				
			var dblorderAmount = parseFloat(orderAmount);
			var dblnewAmount = parseFloat(strNewAmount);
				
			var arrNewAmount = strNewAmount.split(".");
	
			if(arrNewAmount.length == 2)
			{
				if (arrNewAmount[0] == '')
				{
					strNewAmount = "0" + strNewAmount;
					dblnewAmount = parseFloat(strNewAmount);
					dblnewAmount = dblnewAmount.toFixed(2);
				}
			
				if (arrNewAmount[1].length == 0)
				{
					strNewAmount = strNewAmount + "00";
					dblnewAmount = parseFloat(strNewAmount);
					dblnewAmount = dblnewAmount.toFixed(2);
				}
				
				if (arrNewAmount[1].length == 1)
				{
					strNewAmount = strNewAmount + "0";
					dblnewAmount = parseFloat(strNewAmount);
					dblnewAmount = dblnewAmount.toFixed(2);
						
				}
					
				if (arrNewAmount[1].length > 2)
				{

					dblnewAmount = dblnewAmount.toFixed(2);
					strNewAmount = dblnewAmount;
					
				}
			}
			
	
					if ((dblnewAmount <= dblorderAmount) && (arrNewAmount.length < 3))
					{
							
						while (strNewAmount.indexOf(dot)>-1) {
							pos = strNewAmount.indexOf(dot);
							strNewAmount = "" + (strNewAmount.substring(0, pos) + comma + 
							strNewAmount.substring((pos + dot.length), strNewAmount.length));
					    }
	
						if (confirm("Are you sure you want to settle "+ strNewAmount +" "+ Curr +" ?")) {
											
								window.open("Capture.asp?Action=Capture&Type=ChangeAmt&ID="+ P37 +"&newAmount="+ strNewAmount +"","link","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,fullscreen=no,width=446,height=250");

						} 

					}
					else{
						alert('Invalid amount!');

					}
		}
		else
		{
			alert('Invalid amount!');
		}
	}
	else
	{
		alert('Invalid amount!');
	}
}

Har ni några förslag?

Medlem sedan juni 20014 421 inlägg
#2

vart funkar den inte?

Medlem sedan okt. 200688 inlägg
#3

Det verkar som att den inte kör scriptet..
Det händer inget när man klickar på länken

<a href=""javascript:ValidateChange(' bla bla bla

Medlem sedan juni 2002256 inlägg
#4

Kör lite enkel felsökning på den och släng in några alert() här och var för att se hur långt den kommer.

function ValidateChange(orderAmount,newAmount,Curr,P37)
{	
	[blue]alert('funktionen startar');[/blue]
	var strNewAmount = newAmount;
	
	if (IsNumeric(strNewAmount) == true)
	{
		[blue]alert('IsNumeric(strNewAmount) == true');[/blue]
		if (strNewAmount.length != 0)
		{
			[blue]alert('strNewAmount != 0');[/blue]

(...)
Medlem sedan okt. 200688 inlägg
#5

hehe den verka fastna på första alerten..

Medlem sedan dec. 20025 483 inlägg
#6

Var är IsNumeric() definierad?

Vad säger felkonsolen i FF?

Medlem sedan juni 20014 421 inlägg
#7

använd isNaN istället. isNumeric är specifik för JScript.

skriv om såhär: if (!IsNaN(strNewAmount) == true)

Medlem sedan okt. 200688 inlägg
#8

den säger att this.changeamt inte har någon egenskap..

<a href="javascript:ValidateChange('1,5',this.ChangeAmt.value,'SEK','531');">

ChangeAmt är en textinput där man skriver ett värde som får vara högst 1,5
Verkar som att den inte klarar hämta värdet från textfältet då.. men hur kan detta funka så bra i IE men inte FF

Medlem sedan okt. 200688 inlägg
#9

kan jag skriva något annat än this.ChangeAmt.value för att hämta värdet ur textinputen ChangeAmt? Provade att sätta fast värde där istället för this.ChangeAmt.value och då funkade det bra

Medlem sedan dec. 20025 483 inlägg
#10

Skriv

document.forms['namn_på_formulär'].ChangeAmt.value
269 ms totalt · 4 externa anrop · v20260731065814-full.0583408b
130 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
133 ms — ändringar (db)