You are not logged in.

  • Login

1

Friday, July 20th 2007, 10:13am

JS input felder befüllen

Hallo,

Ich will bei onchange (select-box) ein input field befüllen, klappt auch super, nur wie kann ich das machen, das gleich mehrere befüllt werden.

JavaScript Code

1
2
3
4
5
6
7
8
9
10
11
12
13
function completeNewGeraet (vorlagenName) {
	ajax.onreadystatechange = handlecompleteNewGeraet;
	ajax.open("GET", '/login/new.php?vorlage='+vorlagenName, true);
	ajax.send(null);
 
	return false;
}
 
function handlecompleteNewGeraet () {
	if ((ajax.readyState == 4) && (ajax.status == 200)) {
		document.getElementById('seriennummer').value = ajax.responseText;
	}
}


Meine PHP-Funktion gibt derzeit nur die Seriennummer zurück, nun soll aber noch Name etc. kommen. Kann man das in einer Funktion machen, oder kann ich direkt sagen, was ich aus dem ajax.responseText will? Was halt super wäre wie wenn man das irgendwie so lösen kann,


JavaScript Code

1
document.getElementById('seriennummer').value = ajax.responseText[0];


Jedoch ist der responseText kein Array, nun habe ich mir überlegt, das aber der responseText ein Array beinhalten könnte :)

Nun ist die Frage wenn ich das via einem Array mache wie baue ich das in PHP, so das ich es OHNE porbleme an JS übergeben kann :), oder kennt jemand eine effektivere Methode?

2

Friday, July 20th 2007, 12:35pm

schau mal hier: Ajax Inhalte mit PHP nachladen
Da habe ichs über split() gemacht.

Alternativ gibts noch JSON:
Ajax und JSON

3

Monday, July 23rd 2007, 11:31am

So, das klappt nun alles super, aber ein kleines Problem habe ich da noch... im FF funktioniert alles super, aber im IE (7) geht garnichts. Habe das onchange-event in der Form definiert, FF alles super IE macht garnix... Errors gibts keine :( Hat wer eine Ahnung, was man im IE anders machen muss?


so long

4

Monday, July 23rd 2007, 6:14pm

Quoted from ""JFoX""

Habe das onchange-event in der Form definiert, FF alles super IE macht garnix...


Im select meinst du? Hast du mal ein paar alerts eingebaut?

5

Tuesday, July 24th 2007, 9:29am

Nein in der Form :) FF kann das :), aber ok nachdem ich den halben Tag daran gesessen habe, bin ich nun einen Schritt weiter. Es funktioniert nun im IE und im FF, ABER im IE funktioniert das ganze nur einmal. Sprich, wenn ich in der Select-Box 1 auswähle, wird auch was in das Input-Feld geschrieben. Wenn ich dann nochmmal was auswähle, bleibt das Input-Feld unverändert. Ok ob das ein Fortschritt ist, darüber kann man streiten :shock:

Das ist jetzt ein etwas blödes Problem, hoffe konnte das einigermaßen schildern.

HTML-Code

PHP Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<td>
<select id="vorlage" name="vorlage" onchange="return completeNewGeraet(vorlage.options[vorlage.selectedIndex].value)">
  <option value="">Bitte Vorlage w&auml;hlen</option>
  <?php
  $vorlagen_result =& $db->query("SELECT vorlagenID, geraeteName FROM vorlagen ORDER BY vorlagenID DESC");
while ($vorlagen =& $vorlagen_result->fetchRow()) {
  echo "<option value=\"$vorlagen[0]\">$vorlagen[1]</option>";
  } ?>
</select>
</td>
</tr>
<tr>
<td>Seriennummer:</td>
<td><input id="seriennummer" name="seriennummer" type="text" value=""/></td>


JS-Code

JavaScript Code

1
2
3
4
5
6
7
8
9
10
11
12
13
function completeNewGeraet (vorlagenName) {
	ajax.onreadystatechange = handlecompleteNewGeraet;
	ajax.open("GET", '/login/new.php?vorlage='+vorlagenName, true);
	ajax.send(null);
 
	return false;
}
 
function handlecompleteNewGeraet () {
	if ((ajax.readyState == 4) && (ajax.status == 200)) {
		document.getElementById('seriennummer').value = ajax.responseText;
	}
}



PS: Ich betone nochmals in FF läuft alles, so wie es sein soll. Was machen die am IE falsch?

Danke für die Hilfe

so long

JFoX

6

Tuesday, July 24th 2007, 5:52pm

wird denn die Funktion completeNewGeraet nur einmalig ausgeführt, oder liegts an ajax? Wie gesagt: bau dir ein paar alerts ein

JavaScript Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function completeNewGeraet (vorlagenName) {
	alert('func begin with param '+vorlagenName);
        ajax.onreadystatechange = handlecompleteNewGeraet;
        ajax.open("GET", '/login/new.php?vorlage='+vorlagenName, true);
        ajax.send(null);
        alert('func ok');
 
        return false;
}
 
function handlecompleteNewGeraet () {
	alert('ajax state '+ajax.readyState);
        if ((ajax.readyState == 4) && (ajax.status == 200)) {
        	alert('ajax dom start');
                document.getElementById('seriennummer').value = ajax.responseText;
                alert('ajax dom end');
        }
}

7

Wednesday, July 25th 2007, 9:48am

OK neuer Versuch.

Bei einer Select-Box kann man sachen auswählen.... Gurken, Tomaten, Kirschen.

Wähle ich Gurken aus erscheind in dem Input-Feld der Preis (2EUR). Wenn ich dann aber Tomaten auswähle, bleibt der Preis bei 2EUR... Fazit das Input-Feld wird nicht erneuert, jdeoch ist der Fehler nur im IE. Die JS-Funktion soll immer bei onchange ausgeführt werden. Das Problem ist... Wenn ich einmal was auswähle, wird die Funktion gestartet. Wenn ich mich verklickt habe, wähle ich was anderes aus und das Input-Feld muss neu angepasst werden, was jedoch nicht passiert.

So ich habe den Debug-Vorschlag von D0nUt eingebaut. Wie gesagt, beim ersten mal klappt alles, jedoch beim 2.mal wird nur:

alert('func begin with param '+vorlagenName); <--- wird immer richtig übergeben bei jedem Versuch
alert('func ok');

ausgeführt.

Sprich ab dem 2. change geht er nicht in die function handlecompleteNewGeraet ()....

Die frage ist warum klappt es, wenn ich das erste mal was auswähle und ab dem 2, 3,4 etc. nicht?

8

Wednesday, July 25th 2007, 11:54am

dann initialisier ajax mal innerhalb der Funktion

JavaScript Code

1
2
3
function completeNewGeraet(vorlagenName) {
	ajax = window.XMLHttpRequest?new XMLHttpRequest(): new ActiveXObject("Microsoft.XMLHTTP"); 
	...

9

Wednesday, July 25th 2007, 1:49pm

So, jetzt funktioniert alles sowohle IE als auch FF, nur kann mir das einer begründen? Warum muss ich ajax neu initialisieren? In jeder anderen funktion funktioniert alles ohne probleme...

Aber vielen Danke für die Hilfe...

Social bookmarks