# String auf Nummern prüfen



## Prophet05 (8. April 2005)

Ich möchte einen String darauf testen ob er nur aus zahlen besteht bis jetzt habe ich diese Script es Funktioniert leider aber nicht:

```
function ButtonAktiv(name)
 			   {
 		    		var string = document.getElementByName(name).value;
 					
 					if (!isNaN(string))
 		    		    document.getElementById('senden').setAttribute('disabled', 'false');
 					else
 		    		    document.getElementById('senden').removeAttribute('disabled', 'true');
 				}
```
 das wende ich so auf mein html an:

```
<input type="text" size="3" maxlength="3" name="breite" value="200" OnChange="ButtonAktiv('breite');">
```
 
 Ich würde gerne wissen warum es nicht Funktioniert oder ob es eine bool isNumber(); funktion oder sowas gibt. 

 mfg Prophet05


----------



## T3ch (8. April 2005)

Hi;
ich hab einmal eine neue funktion gemacht, die zwar nicht deiner entspricht aber den Sinn erfüllt


```
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<script type="text/javascript">
function nan(eingabe)
{
	if(isNaN(eingabe))
	{
	alert(eingabe+" ist keine Zahl!\nBitte geben sie nur eine Zahl ein.");
	document.forms[0].elements[0].focus();
	}
}
</script>
<title>Script</title>
</head>
<body>
<div>
 <form action="" method="post">
  <p><input name="breite" type="text" size="3" maxlength="3" value="200" />
  <input type="submit" onmouseover="nan(this.form.breite.value)" value="Prüfen" /></p>
 </form>
</div>
</body>
</html>
```

Greetz


----------



## Quaese (8. April 2005)

Hi,

versuch es mal mit

```
if(!isNaN(Number(string)))
```
Ciao
Quaese


----------



## Prophet05 (9. April 2005)

Funktioniert leider beides nicht in verbindung mit meiner Funktion. Habe ich das JS an sich den Richtig geschrieben

 mfg Prophet05


----------



## T3ch (9. April 2005)

Ok;

ich habe dein Script jetzt verbessert

1. habe ich getElementByTagName() (die methode heisst getElement*s*ByTagName()) durch getElementById() ersetzt
2. bei der setAttribute() Methode fehlte der Wert, du hast nur das Attribut angegeben

ich glaub das wars auch schon 

->>


```
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<script type="text/javascript">
function ButtonAktiv(id)
	{
 	var string = document.getElementById(id).value;
 					
	if (!isNaN(string)){
	document.getElementById('senden').setAttribute('disabled','disabled', 'false');
	}
	else{
	document.getElementById('senden').removeAttribute('disabled','disabled', 'true');}
 	}
</script>
<title>Script</title>
</head>
<body>
<div>
 <form action="" method="post">
  <p><input id="a" type="text" size="3" maxlength="3" value="200" onchange="ButtonAktiv('a')" />
  <input id="senden" type="submit" value="Prüfen" /></p>
 </form>
</div>
</body>
</html>
```

Viel Spass damit;

Greetz


----------



## Prophet05 (9. April 2005)

es funktioniert leider immernoch nicht


----------



## T3ch (9. April 2005)

Also ich habe beide geposteten Funktionen mit IE 6 und FF 1.02 getestet und beide funktionieren da auch...


----------



## Sven Mintel (9. April 2005)

```
var string = document.getElementByName(name).value;
```

Es gibt keine Methode "getElementByName()" ... die Methode nennt sich "getElement*s*ByName()" ....ein  name-Attribut kann mehrfach vergeben werden... diese Methode liefert dir alle Elemente mit diesem Namen in einem Array.

Wenn du jeweils nur ein Element mit dem betreffenden Namen im Dokument hast, sollte dich 

```
var string = document.getElementsByName(name)[0].value;
```
 ..zum Ziel führen(die Vorschläge von T3ch sollten auch funktionieren... wirf im Zweifelsfall mal einen Blick in die Javascript-Konsole und poste die Fehlermeldung/en)


----------



## Prophet05 (9. April 2005)

Ich habe das alles Versucht aber will einfach nicht Funktionieren. Fehlermeldungen habe ich kaum bekommen er hat nur gesagt document.getElementsByName('...')[0].setAttribut('disabled', 'true'); hätte keinen wert


----------



## Sven Mintel (9. April 2005)

Wieviel Fehlermeldungen soll es denn geben...eine reicht aus, damit die Skriptausführung abgebrochen wird.

Ich weiss jetzt nicht, warum du auf einmal übr den Namen auf das zu änderndeElement zugreifst... ursprünglich hast du es über die ID ('senden')

Wieauchimmer....

```
<html>
<head>
<title>Test</title>
<script type="text/javascript">
<!--
function ButtonAktiv(name)
 			   {
 		    		var string = document.getElementsByName(name)[0].value;
 					
 					if (!isNaN(string))
 		    		    document.getElementById('senden').setAttribute('disabled', 'false');
 					else
 		    		    document.getElementById('senden').removeAttribute('disabled', 'true');
 				}
//-->
</script>
</head>
<body>
<input type="text" size="3" maxlength="3" name="breite" value="200" OnChange="ButtonAktiv('breite');">
<input id="senden"type="submit">
</body>
</html>
```

funktioniert problemlos, genauso wie die beiden Beispiele von t3ch(beim 2. hatte er nur die Sachen vertauscht...der Button wird deaktiviert, wenn eine Zahl eingegeben wurde.. in der hochgeladenen Sache ist es korrigiert)


Um Missverständnissen vorzubeugen... das ganze erfolgt nicht direkt bei der Eingabe im Textfeld... sondern erst, wenn das Textfeld nach der Änderung verlassen wird.

Wenn es gleich bei der Eingabe passieren soll, verwende bspw. onkeyup.


----------



## T3ch (9. April 2005)

Ich habe die Seiten genau so wie ich sie gepostet habe mal online gestellt...

Script1  - nur Buchstaben
Script2  - nur Zahlen


----------



## Prophet05 (9. April 2005)

dann liegt es scheinbar ja nicht an der Prüffunktion. Ich wollte mit dem ganzen einen Absendenbutton blockieren. Vieleicht liegt es ja da dran, habe ich denn da einen Fehler gebaut.

 MfG Prophet05


----------



## Sven Mintel (9. April 2005)

Logisch hast du da einen Fehler....wozu sonst dieses Thema!

Wo er liegt, kannst du hier nachlesen...wie du ihn beseitigst, dazu hast du jetzt 3 funktionierende Vorschläge.


----------



## T3ch (9. April 2005)

Also, wenn du einen Absendebutton blocken willst, dann kannst du doch einfach eine der hier geposteten Dateien (die alle den Absendebutton blockieren) benutzen und nach Wunsch noch ein bisschen andere Farben usw. nehmen.

Ich sehe da kein Problem... 

Ansonsten füg deinem Post doch bitte ein Bsp. oder ähnliches bei

Greetz


----------



## Prophet05 (10. April 2005)

Es funktioniert jetzt. Er blockiert den Button und er gibt ihn wieder frei. Ich habe es jetzt so gemacht das ich mit window.setTimeout(); die Funktion immer wieder Prüfen lasse ob gerade ein Buchstabe dort steht oder eine zahl. Aber Komischer weise Blockiert er mal richtig und mal zum Falschen augenblick. Wobei ich es aber so gemacht habe das er mehrere Felder gleichzeitig Prüft:

```
function ButtonAktiv()
  {
  	var string = Array();
  	var string[0] = document.getElementsByName('breite')[0].value;
  	var string[1] = document.getElementsByName('hoehe')[0].value;
  	var string[2] = document.getElementsByName('borderwidth')[0].value;
  	var string[3] = document.getElementsByName('fontsize')[0].value;
  	
  	for(var i = 0;i < string.length();i++)
  	{
  		if (!isNaN(string[i]))
 			document.getElementById('senden').setAttribute('disabled','false');
  		else
 			document.getElementById('senden').removeAttribute('disabled','true');
  	}
  	
  	window.setTimeout("ButtonAktiv()", 500);
  }
```


----------

