Hij voert charAt niet uit

Status
Niet open voor verdere reacties.

happyface133

Gebruiker
Lid geworden
3 apr 2008
Berichten
7
Ik heb een btw-nummer van het formaat xxxx.xxx.xxx
Om dit te valideren check ik per karakter of het een getal is. Bij de puntjes wil ik dus controleren of het karakter een "." is.
Als ik het BTW-nummer invoer zoals het moet, heeft hij toch nog een melding. De melding heb ik nu gewoon gezet dat hij het karakter toont. Dus in de melding zie ik wel degelijk dat het een "." is, maar hij mag die melding eigenlijk niet geven.

Hieronder het stukje code...



Code:
if (str.value.charAt(8) == ".") 
{ 
     alert(str.value.charAt(8)); 
     return true; 
     str.focus(); 
}
 
hoi

als het goed is moet je niet str.value.charAt() doen
maar gewoon str.charAt()

kan zijn dat ik mis heb maar moet je maar ff proberen

greets NoSoupForYou
 
Is een 'regular expression' niet handiger? Zoiets als dit:

Code:
var nummer = '2122.221.431';
var patroon = /^\d{4}.\d{3}.\d{3}$/i;
if (patroon.exec(nummer))
{
   alert('Geldig nummer');
}
else
{
   alert ('Nummer ongeldig');
}
 
Is een 'regular expression' niet handiger? Zoiets als dit:

Code:
var nummer = '2122.221.431';
var patroon = /^\d{4}.\d{3}.\d{3}$/i;
if (patroon.exec(nummer))
{
   alert('Geldig nummer');
}
else
{
   alert ('Nummer ongeldig');
}

ik heb het met reguliere expressie kunnen oplossen

Code:
function testBTW(str, message)
{	
	if (str.value.match(/([0-9]{4})\.([0-9]{3})\.([0-9]{3})/))
	{

		return true;

	}
	return false;
}

function checkBTW(str, message)
{
	if (testBTW(str))
	{
		return false;
	}
	else
	{
		alert(message);
		return true;
		str.focus();
	};
}
 
Is een 'regular expression' niet handiger? Zoiets als dit:
........
Dat laat nog iets als 2122:221:431 door. Zonder \ ervoor staat de punt voor elk teken:
Code:
<script>
var nummer = '2122:221:431';
var patroon = /^\d{4}.\d{3}.\d{3}$/i;
if (patroon.exec(nummer))
{
   alert('Geldig nummer');
}
else
{
   alert ('Nummer ongeldig');
}
</script>
ik heb het met reguliere expressie kunnen oplossen
........
Dat laat nog 55555.333.4444 door, de match maakt een array van de patronen die ergens in de string worden aangetroffen:
Code:
<form name="f">
 <input name="str" type="text" size="24" value="55555.333.4444">
</form>

<script>
function testBTW(str, message)
{	
	if (str.value.match(/([0-9]{4})\.([0-9]{3})\.([0-9]{3})/))
	{

		return true;

	}
	return false;
}

function checkBTW(str, message)
{
	if (testBTW(str))
	{
		return false;
	}
	else
	{
		alert(message);
		return true;
		str.focus();
	};
}

checkBTW(document.f.str,'Fout btw nummer!');
</script>
En de focus() komt na de return (die breekt de functie af) en wordt daarom niet uitgevoerd.

Dit script:
Code:
<form name="f">
 <input name="str" type="text" size="24" value="4444.333.333">
</form>

<script>
function checkBTW(str,message) {
 if (/^\d{4}\.\d{3}\.\d{3}$/.test(str.value)) return false;
 alert(message);
 str.focus();
 return true;
 };

checkBTW(document.f.str,'Fout btw nummer!');
</script>
zou het goed moeten doen. :)


Vr.Gr. Egel.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan