[JS] parameters aan functie

Pagina: 1
Acties:

  • Rhapsody
  • Registratie: Oktober 2002
  • Laatst online: 23:59

Rhapsody

In Metal We Trust

Topicstarter
hallo,


ik heb een grote lap javascript en daarbij wil ik een element 'dynamisch' voorzien van een onkeypress event.
Dit doet ik alsvolgt:

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 formValidator(formName, formFields)
{
    // Store formname
    formname = formName;
   // Array for fieldIds
   this.fieldId = new Array(formFields);
   // array for friendly fieldnames
   this.fieldName = new Array(formFields);
   // Array for fieldconditions
   this.fieldContenttype = new Array(formFields);
   // Array for fieldlength
   this.fieldLength = new Array(formFields);
   // Array for required fields
   this.fieldRequired = new Array(formFields);
   // Total number of elements
   this.element = 0;

   // Last error message
   this.errormessage = ''; 
   
    this.keypress = function()
    {
        var cKey = window.event.keyCode;
        var iIndex = '';
        alert(this.fieldId[0]);         
    }
   
   // Function to add a new element
   this.setCheck = function(fieldId, fieldname, contenttype, minlength, maxlength, required)
   {
    this.fieldId[this.element] = fieldId;
      this.fieldName[this.element] = fieldname;
      this.fieldContenttype[this.element] = contenttype;
      this.fieldLength[this.element] = minlength + '^' +  maxlength;
      this.fieldRequired[this.element] = required;
      this.element++;
      var obj = GetInstanceOf(fieldId).toLowerCase();
        if (obj == 'textbox' || obj == 'textarea' || obj == 'password' ) 
        {
            oTemp = fieldId;
            // HIER WIL IK EEN PARAMETER MEEGEVEN
            document.getElementById(fieldId).onkeypress = this.keypress;
        }
    }

}


Ik heb de code voorzien van commentaar op de plekken waar het om gaat.
Bovenaan staan dus een aantal array's, deze array's worden gevuld in de onderste functie (this.setCheck), dit werkt goed.
Nu wil ik deze array's aanspreken in de functie daarboven this.keypress, maar dat werkt niet.
De foutmelding die ik dan krijg is :

Fout: this.fieldId.0 is leeg of geen object.

Terwijl die array dus wel degelijk gevuld is.


Het mooiste zou nu zijn als ik variabelen mee kun geven aan this.onkeypress.
Weet iemand hoe ik dit kan realiseren?


excuses voor het vernaggelen van de layout

[ Voor 4% gewijzigd door Rhapsody op 08-07-2004 13:07 ]

🇪🇺 pro Europa!


Verwijderd

zeg he, gebruik eens de search of gewoon je ogen, dit is nog geen 24 uur geleden langs gekomen:

variabele doorgeven bij event

  • André
  • Registratie: Maart 2002
  • Laatst online: 18-05 16:30

André

Analytics dude

En wat dacht je van dit topic (2 dagen geleden):

[rml][ JavaScript : IE5.5] event capturing[/rml]

  • Rhapsody
  • Registratie: Oktober 2002
  • Laatst online: 23:59

Rhapsody

In Metal We Trust

Topicstarter
@mophor:
als je even leest wat ik bedoel, zie je dat ik dat niet bedoel.......

parameters meegeven aan functies is niet het probleem, maar IE gaat over de zeik wanneer ik parameters mee wil geven aan een functie die ik dynamisch aan een event toeken.


@andre:
Ook dat bedoel ik niet, dan kan je alleen maar een event meegeven.
(heb ik namelijk al geprobeerd, want dat soort dingen vond ik via google)

Ik heb inmiddels een soort van oplossing:

code:
1
document.getElementById(fieldId).setAttribute("onkeypress", function() { validate_keypress('hallo'); });


Dit werkt, nu moet ik alleen nog wat omgooien, maar goed dat moet wel lukken.

[ Voor 47% gewijzigd door Rhapsody op 08-07-2004 13:27 ]

🇪🇺 pro Europa!


Verwijderd

Rhapsody schreef op 08 juli 2004 @ 13:06:
Het mooiste zou nu zijn als ik variabelen mee kun geven aan this.onkeypress.
Weet iemand hoe ik dit kan realiseren?
wat bedoel je dan?

  • Rhapsody
  • Registratie: Oktober 2002
  • Laatst online: 23:59

Rhapsody

In Metal We Trust

Topicstarter
ik wilde aan deze toekennig:
code:
1
document.getElementById(fieldId).onkeypress = this.keypress;

parameters meegeven (this,keypress(param1, param2 etc etc))
maar dat wilde maar niet.
Heb me helemaal rot gezocht en kwam allerlei troep tegen. (die of half of niet werkte)

En nu heb ik het opgelost zoals beschreven in mijn vorige post.

🇪🇺 pro Europa!


  • Clay
  • Registratie: Oktober 1999
  • Laatst online: 25-02 11:17

Clay

cookie erbij?

setAttribute is niet bedoeld om events toe te kennen. Dat kan je beter doen met addEventListener, attachEvent, of op de oude DOM0 manier. De object scope kan je in elementen opslaan of in een closure scopen (als dat een probleem is), een overvloed aan mogelijkheden lijkt me :)

Instagram | Flickr | "Let my music become battle cries" - Frédéric Chopin


  • Rhapsody
  • Registratie: Oktober 2002
  • Laatst online: 23:59

Rhapsody

In Metal We Trust

Topicstarter
punt is dat die addEventListener niet in alle browsers werkt, evenals attachEvent.

Ik ga nog even puzzelen of ik een mooiere oplossing kan vinden :)

thanks :)

edit:

code:
1
2
document.getElementById(fieldId).onkeypress =  function() { 
validate_keypress(fieldId, fieldname, contenttype, minlength, maxlength, required); }


werkt ook.....

[ Voor 38% gewijzigd door Rhapsody op 08-07-2004 13:43 ]

🇪🇺 pro Europa!


Verwijderd

Rhapsody schreef op 08 juli 2004 @ 13:33:
ik wilde aan deze toekennig:
code:
1
document.getElementById(fieldId).onkeypress = this.keypress;

parameters meegeven (this,keypress(param1, param2 etc etc))
maar dat wilde maar niet.
Heb me helemaal rot gezocht en kwam allerlei troep tegen. (die of half of niet werkte)

En nu heb ik het opgelost zoals beschreven in mijn vorige post.
en als je dan gewoon
code:
1
2
3
document.getElementById(fieldId).onkeypress = function() {
  this.keypress(param1, param2 etc etc);
}

doet zoals beschreven in dat andere topic?

of zie ik nou iets essentieels over het hoofd waardoor het in jouw geval niet kan :?

  • Rhapsody
  • Registratie: Oktober 2002
  • Laatst online: 23:59

Rhapsody

In Metal We Trust

Topicstarter
Dat wil niet, snap ook niet waarom.
Daarbij komt nog eens dat ik die array's dan niet kan benaderen.......

Terwijl dat in de andere functie wel kan, vandaar dat ik stukliep.

🇪🇺 pro Europa!


Verwijderd

8)7 mijn idee werkte niet omdat:

in dit geval this verwijst naar het element waarin die functie staat en niet naar jouw eigen object
(/me is ook niet helemaal helder vandaag)

wil je toch een referentie naar een object moet je die eerst maken (hoewel me dat een beetje overbodig lijkt in jouw geval):

code:
1
2
3
4
5
6
7
8
9
10
11
myObj = function() {
  this.blaat = 'poep';  //zomaar een property
  this.speak = function(who) {
    alert(who+'says: '+this.blaat)
  }  //zomaar een method
  this.layer = document.body.appendChild(document.createElement('div'));  //een html element
  this.layer.wrapper = this;  // de referentie
  this.layer.onmouseover = function() {
    this.wrapper.speak('mophor');  //this verwijst naar het element van waaruit je dus terugverwijst naar je referentie
  }
}

[ Voor 23% gewijzigd door Verwijderd op 08-07-2004 14:42 . Reden: commented ]

Pagina: 1