[JS] OnClick="...." bij "new Option()"

Pagina: 1
Acties:
  • 108 views sinds 30-01-2008
  • Reageer

  • Bramster
  • Registratie: Juni 2001
  • Nu online
Ik heb een scriptje in JS wat van een array (met plaatsnamen en postcodes) een dropdown lijst maakt en die lijst "realtime" filtered gebaseerd op wat je intypt in een input veldje.

Wat ik nu wil ik dat als je op een option klikt dat die dan naar het klembord gestuurd word, of eerst selecteren en dan op een knop duwen ofzo. (de code om te copy-pasten heb ik al)

Ik had al gekeken op w3cschools naar de specs van het DOM object "option" maar kan niet iets vinden wat mijn probleem oplost (http://www.w3schools.com/htmldom/dom_obj_option.aspT)

volgens mij is het dus niet mogelijk via "new option()"
misschien dat iemand hier een goeie tip heeft om het anders te doen?

(ik ben niet zo geweldig met javascript, maar ik heb wel nog een lange stageperiode te gaan, dus tijd zat om het uit te zoeken :P)

het stuke code wat de dropdown maakt:
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
function populateListPlaats(searchstringPlaats) 
{
    if(searchstringPlaats.length == 0)
        {
            searchstringPlaats = null;
        }

    while (0 < document.frm.result.options.length) 
        {
            document.frm.result.options[(document.frm.result.options.length - 1)] = null;
        }
        
    var j=0;
    for (var i=0; i < data_plaats.length; i++) 
        {           
                if(data_plaats[i].substr(0,searchstringPlaats.length).toUpperCase() == searchstringPlaats.toUpperCase()) 
                {
                        var no = new Option();
                        no.text = data_full[i]
                        document.frm.result.options[j] = no
                        j++;
                }
        }
}

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Wat wil je precies kopieren naar je klembord?

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.


  • Bramster
  • Registratie: Juni 2001
  • Nu online
BtM909 schreef op maandag 31 januari 2005 @ 15:35:
Wat wil je precies kopieren naar je klembord?
de "no.text"
oftewel, de text van optie.

Ik had net dit geprobeert als testje, maar hij laat de "alert" elke keer zien, dus niet alleen op een click ([sub]niet leuk als je erg vaak op enter moet rammen :P)

code:
1
document.frm.result.options[j].onClick = alert(data_full[i]);

[ Voor 41% gewijzigd door Bramster op 31-01-2005 16:01 ]


  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Je kan bijvoorbeeld met het onchange-event op je <form> kijken welk item is geselecteerd:

JavaScript:
1
2
var lst = document.forms[0].selectLijst;
var lstText = list.options[list.selectedIndex].text;


Hier staat voorbeeld code hoe je die in je klembord kan frotten (2e post):
http://www.able2know.com/forums/about19884.html

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.


  • Bramster
  • Registratie: Juni 2001
  • Nu online
het werkt! :)
thx BtM909

hier nog effe de hele code, voor diegene wat het interesant vinden :)

JavaScript:
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
function copy_clip(text2copy)
{
    var userAgent = self.navigator.userAgent;
    
    if (window.clipboardData) 
    {
       window.clipboardData.setData("Text", text2copy);
    }
    else if ((userAgent.indexOf('Gecko') >= 0)) 
    { 
        netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
               
        var clip = Components.classes['@mozilla.org/widget/clipboard;1'].createInstance(Components.interfaces.nsIClipboard);
        if (!clip) return;
                                                     
        var trans = Components.classes['@mozilla.org/widget/transferable;1'].createInstance(Components.interfaces.nsITransferable);
        if (!trans) return;
                                                                                                               
        trans.addDataFlavor('text/unicode');
                                                                                                                                                                   
        var str = new Object();
        var len = new Object();
        var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
        var copytext=text2copy;
        str.data=copytext;
        trans.setTransferData("text/unicode",str,copytext.length*2);
        
        var clipid=Components.interfaces.nsIClipboard;
        if (!clip) return false;
        clip.setData(trans,null,clipid.kGlobalClipboard);
    }
}                                                                                                                                                                                                                                                                                                                                                                      
function chkSelected()
{
var lst = document.forms[0].result;
var lstText = document.frm.result.options[document.frm.result.selectedIndex].text;

copy_clip(lstText);
}


function populateListPlaats(searchstringPlaats) 
{
    if(searchstringPlaats.length == 0)
        {
            searchstringPlaats = null;
        }

    while (0 < document.frm.result.options.length) 
        {
            document.frm.result.options[(document.frm.result.options.length - 1)] = null;
        }
        
    var j=0;
    for (var i=0; i < data_plaats.length; i++) 
        {           
            if(data_plaats[i].substr(0,searchstringPlaats.length).toUpperCase() == searchstringPlaats.toUpperCase()) 
                {
                    var no = new Option();
                    no.text = data_full[i]
                    no.value = data_full[i]
                    document.frm.result.options[j] = no
                    j++;
                }
        }
}