[javascript] SelectedIndex neemt alleen ge-alerte waarde aan

Pagina: 1
Acties:

  • whitehouse
  • Registratie: Maart 2000
  • Laatst online: 27-03 12:23
[case]

Ik heb een invoerveld en daarnaast een dropdown menu.
Als er in het invoerveld de waarde 'INC' wordt ingevoerd, wordt er een extra de code hiervoor is het volgende :

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function checkBestemming(value,id) {
if(value=='INC') {
    var NewOption = document.createElement("OPTION");
    NewOption.text = "INC";
    NewOption.value = "INC";
    
    var NewOption1 = document.createElement("OPTION");
    NewOption1.text = "INC";
    NewOption1.value = "INC";
    var count=0;
    for(i=0;i<document.getElementById('dis_form_actiecode').options.length;i=i+1) {
          if(document.getElementById('dis_form_actiecode').options[i].value=='INC') {
                count=count+1
          }
    }
    if(count==0) {
        document.getElementById('dis_actiecode').add(NewOption);
        document.getElementById('dis_form_actiecode').add(NewOption1);
    }

}


Dit werkt goed. Voer ik 'INC' in, wordt de waarde 'INC' ook als option toegevoegd in de dropdown. Tot nu toe geen problemen.

[doel]
nu wil ik als er INC wordt ingevoerd, de selectedIndex ook op de 'INC' komt te staan.

[probleem]
Nu is het rare geval, dat als ik de Index-waarde van "INC" uit de drowdown lees, en deze wil gebruiken in mijn selectedIndex=waarde, hij een foutmelding geeft :

Alleen ALS ik de waarde (newlength, regel 20) eerst alert, en dan gebruik dmv selectedIndex=waarde, dan gaat het wel goed.

[mogelijke oplossingen]
ik heb op vele sites gezocht naar dit probleem. k ben 1 persoon tegen gekomen die hetzelfde probleem had, maar hij heeft geen oplossing gevonden.

mijn code om de dropdown te setten op de INC :

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
function controlKey(key) {
    for(i=0;i < arr.length;i=i+1) {
        if(document.getElementById('ActiveElement').value==arr[i]) {
        var selected_id = i;
        }
    }

    if(event.keyCode==13) {
        var bSetFocusOnElement = false;
        var i = selected_id; /* Deze moet je op het huidige element krijgen!! */
        while(i++ < arr.length && !bSetFocusOnElement ){
            if(i!=arr.length) {     
                if( !document.getElementById('dis_'+arr[i]).disabled){    
                        // check of INC is ingevuld
                        if((document.getElementById('dis_bestemming').value)=='INC') {
                            i=i+1;
                            var newlength= document.getElementById('dis_actiecode').options.length;
                            
                            newlength++;
                            
                            // doorloop alle options van actiecode
                            for(q=0;q<newlength;q=q+1) {
                                
                                document.getElementById('dis_actiecode').selectedIndex=q;
                                if(document.getElementById('dis_actiecode').options[q].value=='INC') {
                                    document.getElementById('dis_form_actiecode').selectedIndex=q;
                                }
                                    
                                
                        
                            }
                            
                            
                            
                        }
                        document.getElementById('dis_'+arr[i]).focus();
                        bSetFocusOnElement = true;
                }    
                
            }
            else {  
            document.getElementById('id').focus();  
            }
        }
    }
}


nu is mijn vraag : komt dit probleem bekend voor ?

[ Voor 15% gewijzigd door Pelle op 16-06-2005 16:38 . Reden: code tags ]

| www.everythingisspiritual.com | www.mosaic.org |


  • André
  • Registratie: Maart 2002
  • Laatst online: 06-05 11:13

André

Analytics dude

En als je het eens met een timeout probeert?

code:
1
setTimeout("document.getElementById('dis_form_actiecode').selectedIndex=q", 100);

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Begrijp ik nou goed dat je de toegevoegde waarde wilt selecteren?

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • whitehouse
  • Registratie: Maart 2000
  • Laatst online: 27-03 12:23
De timeout heeft precies hetzelfde resultaat :/
BtM909 schreef op donderdag 16 juni 2005 @ 16:39:
Begrijp ik nou goed dat je de toegevoegde waarde wilt selecteren?
zowel de value als de tekst hebben de waarde "INC" ..

nu wil ik dus de index-waarde van INC zoeken uti de dropdown en deze dan selected maken (zodat de INC ook echt selected is)

[ Voor 80% gewijzigd door whitehouse op 16-06-2005 16:41 ]

| www.everythingisspiritual.com | www.mosaic.org |


  • Amras
  • Registratie: Januari 2003
  • Laatst online: 01-10-2025
Heb even wat zitten testen, zo werkt het in IE6 en FF bij mij:

JavaScript:
1
2
3
4
var NewOption = document.createElement("OPTION");
NewOption.text = "INC";
NewOption.value = "INC";
NewOption.selected = "selected";


:)

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Waarom gebruik je dan niet gewoon

JavaScript:
1
2
eleObj.options[i].selected = true;
eleObj.value = eleObj.options[i].value;


Die laatste regel heb ik er ooit bijgezet, omdat ik een rare bug tegenkwam bij veel / snel dropdowns aanpassen

[ Voor 25% gewijzigd door BtM909 op 16-06-2005 16:47 ]

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • André
  • Registratie: Maart 2002
  • Laatst online: 06-05 11:13

André

Analytics dude

Kun je dan niet gewoon bij het aanmaken van die topic hem direct selected maken?

code:
1
2
3
a = document.createElement("option");
b = lijst.appendChild(a);
b.selected = true;

  • whitehouse
  • Registratie: Maart 2000
  • Laatst online: 27-03 12:23
code:
1
NewOption.selected = "selected";


dit werkt wel !! bedankt!
toch ben ik benieuwd waarom mijn manier niet werkt(e).

| www.everythingisspiritual.com | www.mosaic.org |

Pagina: 1