Versio

InnerHTML verwijderd waardes uit textfields.

Overzicht Reageren

08/09/2011 14:27:19
Quote Anchor link
Hallo,

Ik heb een heel groot probleem en dat is dat innterHTML waardes uit mijn textfield verwijderd.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
    var d = document.getElementById("text");
    d.innerHTML += "123";
    alert("Hi!");


Wanneer ik dit heb:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<div id="text">
        <input name='item' type='text'>
</div>


En ik heb een waarde in 'item' staan dan wordt deze waarde verwijderd wanneer ik die bovenste code uitvoer.

Hoe kan dit en hoe is dit op te lossen?
Alvast bedankt
Kevin
 
PHP hulp

PHP hulp

25/05/2012 04:39:09
Gesponsorde koppelingen:
 
Jacco Engel

Jacco Engel

08/09/2011 14:31:03
Quote Anchor link
omdat innerHTML de orginele waarde van de HTML bevat , wat een lege input is
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<div id="text">
        <input name='item' type='text' id="item">
</div>

d = document.getElementById("text");
val = document.getElementById('item').value
d.innerHTML += "123";
document.getElementById('item').value = val


Gelukkig is dat op deze manier relatief makkelijk op te vangen ;)
Gewijzigd op 08/09/2011 14:35:16 door Jacco Engel
 

08/09/2011 14:38:06
Quote Anchor link
Jacco Engel op 08/09/2011 14:31:03:
omdat innerHTML de orginele waarde van de HTML bevat , wat een lege input is
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<div id="text">
        <input name='item' type='text' id="item">
</div>

d = document.getElementById("text");
val = document.getElementById('item').value
d.innerHTML += "123";
document.getElementById('item').value = val


Gelukkig is dat op deze manier relatief makkelijk op te vangen ;)


En wat nou als ik het volgende doe?:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
d = document.getElementById("text");
val = document.getElementById('item').value
d.innerHTML += "<input name='item[]' type='text'>";
document.getElementById('item').value = val


Dus dat ik meerdere input velden toevoeg?
Of is er een betere manier om exta invulvelden toe te voegen?
Gewijzigd op 08/09/2011 14:38:32 door
 
Jacco Engel

Jacco Engel

08/09/2011 14:40:54
Quote Anchor link
moment ik kijk ff
 

08/09/2011 14:43:13
Quote Anchor link
Jacco Engel op 08/09/2011 14:40:54:
moment ik kijk ff


ah top want ik kom er niet meer uit :(
 
Jacco Engel

Jacco Engel

08/09/2011 14:49:18
Quote Anchor link
okey, los van het feit dat een library het sneller makkelijker of beter kan kun je het tot in oneindigheid in pricipe op deze manier oplossen :
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
d = document.getElementById("text");
value=Array()
for(input in document.getElementsByTagName('input'))
{
    if (!isNaN(input))
    {
       value[input] = document.getElementsByTagName('input')[input].value
    }
}
d.innerHTML += "<br /><input name='item[]' type='text'>";
for(input in document.getElementsByTagName('input'))
{
    if (!isNaN(input) && value[input] !== undefined)
    {
       document.getElementsByTagName('input')[input].value = value[input]
    }
}


Quote:
Of is er een betere manier om exta invulvelden toe te voegen?

ja DOM, maar daar heb ik nu echt ff geen tijd voor :P
Gewijzigd op 08/09/2011 14:54:03 door Jacco Engel
 

08/09/2011 14:54:32
Quote Anchor link
Ah werkt nog niet, in een los document wel maar in mijn adminsysteem niet....
Dit is echt heel raar :(

Toevoeging op 08/09/2011 15:07:24:

Ok ik heb in het script even wat meer alerts gezet:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
d = document.getElementById("sajnfskajdnfkjdsf");
    value=Array()
    alert("start")
    for(input in document.getElementsByTagName('input'))
    {
        if (!isNaN(input))
        {
           value[input] = document.getElementsByTagName('input')[input].value
           alert("hallo2")
        }
    }
    d.innerHTML += "<br /><input name='item[]' type='text'>";
    for(input in document.getElementsByTagName('input'))
    {
        if (!isNaN(input) && value[input] !== undefined)
        {
           document.getElementsByTagName('input')[input].value = value[input]
        }
    }


"Test" wordt wel weergeven
"Hallo2" wordt niet weergeven

Toch nog een klein foutje?

EDIT:
Los wel in mijn adminsysteem niet. Wat kan de fout zijn ?
Gewijzigd op 08/09/2011 15:09:15 door
 
Jacco Engel

Jacco Engel

08/09/2011 15:13:45
Quote Anchor link
Als je Firefox en firebug gebruikt kun je dat makkelijk vinden, tevens kun je dan console.log() gebruiken ipv alert() :)

Verder als je die setup hebt zou ik zeggen voeg op regel 6 (zoals de bovenstaande code is) eens de volgende regel in :
console.log(input)

!isNaN doet namelijk een is numeric check en zou kunnen dat hij daar in jou systeem op 1 of andere manier niet goed door komt
 

08/09/2011 15:16:23
Quote Anchor link
Het is zowieso raar zijn mijn script de waardes verwijderd inplaats dat die in een losdocumentje wel goed werkt.
de <form> tag is overal het zelfde BEHALVE: de pagina waar dit opkomt te staan, staan nog meer velden en textfields.
Kan dit een probleem zijn?
Gewijzigd op 08/09/2011 15:21:51 door
 
Jacco Engel

Jacco Engel

08/09/2011 15:20:25
Quote Anchor link
Yup dat kan :) want op dit moment haal ik alle inputs op dus je hele form zeg maar :P

Toevoeging op 08/09/2011 15:24:49:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
d = document.getElementById("sajnfskajdnfkjdsf");
    value=Array()
    for(input in document.getElementsByTagName('input'))
    {
        if (document.getElementsByTagName('input')[input].name == 'item[]')
        {
           value[input] = document.getElementsByTagName('input')[input].value
        }
    }
    d.innerHTML += "<br /><input name='item[]' type='text'>";
    for(input in document.getElementsByTagName('input'))
    {
        if (document.getElementsByTagName('input')[input].name == 'item[]' && value[input] !== undefined)
        {
           document.getElementsByTagName('input')[input].value = value[input]
        }
    }


Probeer hem eens zo? Tevens kleine opmerking, je moet je base input (die er standaard al staat) ook even item[] noemen ipv item (anders snapt dit jsje hem niet)
Als deze het ook niet doet zou ik toch een framework als jQuery gaan overwegen :)
 

08/09/2011 15:36:37
Quote Anchor link
Dat stomme ding werkt nog niet; heel raar.
Ik zoek nog even verder toch bedankt voor je hulp
 
Jacco Engel

Jacco Engel

08/09/2011 16:45:50
Quote Anchor link
Probleem verder opgepakt in PM voor maatoplossing, als die rond is hoop ik dat TS hem nog wel even post overigens ;)
 



Overzicht Reageren