abonnement Unibet Coolblue Bitvavo
  woensdag 28 februari 2007 @ 10:38:51 #61
85514 ralfie
!Yvan eht nioj
pi_46764544
1
2
3
4
5
6
7
String.prototype.pad=function( len ,char)
{
   if (char==null) char='_';
   var t=this;
   while(t.length<len) t+=char;
   return t;
};


krijgen je strings een handige pad functie erbij

1
2
3
var str="hallo";
document.write(str.pad(10,'x')); //writes halloxxxxx;
document.write(str.pad(10));     //writes hallo_____; 

Altijd makkelijk als je zoiets vaker moet gebruiken
  FOK!-Schrikkelbaas woensdag 28 februari 2007 @ 11:50:43 #62
1972 Swetsenegger
Egocentrische Narcist
pi_46766403
thanks ralfie.

hier niemand op zoek naar een technische webmaster functie?
pi_46768823
quote:
Op woensdag 28 februari 2007 10:38 schreef ralfie het volgende:

[ code verwijderd ]

krijgen je strings een handige pad functie erbij
[ code verwijderd ]

Altijd makkelijk als je zoiets vaker moet gebruiken
Dit is zeker handig zeg!
tevens tvp
pi_46770521
quote:
Op woensdag 28 februari 2007 10:38 schreef ralfie het volgende:

[ code verwijderd ]

krijgen je strings een handige pad functie erbij
[ code verwijderd ]

Altijd makkelijk als je zoiets vaker moet gebruiken
Default padden met een underscore vind ik een beetje vreemd (is natuulijk makkelijk aan te passen). Als de padding langer is dan 1 teken dan klopt de lengte niet altijd. Als je veel moet padden kan ie wel eens langzaam worden.

Ik zou 'm ook padRight() noemen.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
  FOK!-Schrikkelbaas woensdag 28 februari 2007 @ 15:13:45 #65
1972 Swetsenegger
Egocentrische Narcist
pi_46773291
quote:
Op woensdag 28 februari 2007 13:56 schreef SuperRembo het volgende:

Als de padding langer is dan 1 teken dan klopt de lengte niet altijd.
*bekijkt code*
die snap ik niet?
  woensdag 28 februari 2007 @ 15:41:04 #66
85514 ralfie
!Yvan eht nioj
pi_46774347
quote:
Op woensdag 28 februari 2007 15:13 schreef Swetsenegger het volgende:

[..]

*bekijkt code*
die snap ik niet?
als je padding bijv 3 tekens is, wordt de uiteindelijke string langer als wat ie had moeten zijn, bij

1
2
3
str="hallo";
str.pad(10,"hoi")
// geeft hallohoihoi, wat 11 tekens is
  FOK!-Schrikkelbaas woensdag 28 februari 2007 @ 15:42:35 #67
1972 Swetsenegger
Egocentrische Narcist
pi_46774399
quote:
Op woensdag 28 februari 2007 15:41 schreef ralfie het volgende:

[..]

als je padding bijv 3 tekens is, wordt de uiteindelijke string langer als wat ie had moeten zijn, bij
[ code verwijderd ]
Ik had er nog niet eens bij nagedacht dat je padding langer zou willen maken dan 1 teken, maar ja... dan heb je inderdaad een probleem.

Ik dacht dat SuperRembo bedoelde wanneer er meer dan 1 'naloop' teken noodzakelijk is....
pi_46774501
quote:
Op woensdag 28 februari 2007 15:41 schreef ralfie het volgende:

[..]

als je padding bijv 3 tekens is, wordt de uiteindelijke string langer als wat ie had moeten zijn, bij
[ code verwijderd ]
Wat op te lossen is door met de substrings van de padding te gaan werken, en te breaken als de lengte te lang is.
  FOK!-Schrikkelbaas woensdag 28 februari 2007 @ 16:04:14 #69
1972 Swetsenegger
Egocentrische Narcist
pi_46775244
quote:
Op woensdag 28 februari 2007 15:45 schreef Geqxon het volgende:

[..]

Wat op te lossen is door met de substrings van de padding te gaan werken, en te breaken als de lengte te lang is.
1if (char==null || char.length>1) char='_';
pi_46775359
Ok dan, mijn padding functies Ik heb de syntax ongeveer gelijk gehouden aan de functies in .NET.
De default padding is met spaties. De paddign string mag ook langer zijn dat 1 teken.

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
// Helper function for String.padLeft() and String.padRight()
String.prototype._padHelper = function(totalLength, paddingString, isRightPadding) {
   var padding = paddingString;
   if (!padding || padding.length == 0) padding = ' ';
   var s = this.toString();
   var padLength = totalLength - s.length;
   if (totalLength >= 0) {
      while (padding.length < padLength) padding += padding;
      if (isRightPadding) {
         s += padding.substr(padding.length - padLength);
      } else {
         s = padding.substr(0, padLength) + s;
      }
   }
   return s;
};

// Pads a string on the left with a specified padding string to a specified total length.
String.prototype.padLeft = function(totalLength, paddingString) {
   return this._padHelper(totalLength, paddingString, false);
};

// Pads a string on the right with a specified padding string to a specified total length.
String.prototype.padRight = function(totalLength, paddingString){
   return this._padHelper(totalLength, paddingString, true);
};


Test:
1
2
3
4
5
6
7
8
9
var out = [];
out.push('foo'.padLeft(5));
out.push('foo'.padLeft(5, 'x'));
out.push('foo'.padRight(5));
out.push('foo'.padRight(5, 'x'));
out.push('foobarbaz'.padLeft(5, 'x'));
out.push(''.padLeft(5, 'x'));
out.push(''.padLeft(5, ''));
alert('"' + out.join('"\n"') + '"');
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_46944444
Ik update een textveld vanuit een select box via select box, dit gaat goed als je de opties met de muis aanklikt, maar niet als je met de pijtjes toetsen op het toetsenbord door de lijst scrolt wanneer deze is ingeklapt
Hoe kan ik dat voorkomen? zodat het veld wel word geupdate?

<select name="forum_naam" id="forum_naam" OnChange="javascript:select_email(document.getElementById('forum_naam').options[selectedIndex].value);">
Options, etc

edit brainstorm: ga nu ff onkeyup/down proberen
edit2: dat wasm

[ Bericht 11% gewijzigd door Darkomen op 05-03-2007 16:26:21 ]
  maandag 5 maart 2007 @ 17:07:29 #72
12880 CraZaay
prettig gestoord
pi_46946547
OnChange="javascript:select_email(document.getElementById('forum_naam').options[selectedIndex].value);"

kan een stuk simpeler overigens:

onchange="select_email(this.value);"
pi_46971814
ja daar dacht ik later pas aan
Maar toch bedankt!

Weet je misschien ook nog een javascript test voor rekening nummers? van bank en giro(postbank)?

Edit, heb iets gevonden, de proef van 11.
Eens kijken hoe dat zit maar, een werkend voorbeeld is ook goed

Oww, en dan nog postbank nr's

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
<script language="javascript">
function elf_proef(id)
{
  var bankrekeningnummer = document.getElementById(id).value;
  //Verwijder alle tekens die geen cijfers zijn
  bankrekeningnummer = bankrekeningnummer.replace(/D/g, "");
  aantal_tekens = bankrekeningnummer.length;
  var som=0;
  // loop door de 9 cijfers met de 11 proef formule
  for (i=1; i<10; i++)
  {
    getal=bankrekeningnummer.charAt(i-1);
    som+=getal*(10-i);
  }
  // geef resultaat van check terug
  if (som % 11==0 && aantal_tekens==9)
  {
    document.getElementById(id).value = bankrekeningnummer;
    return true;
  }
  else
  {
    alert('Dit is geen geldig bankrekeningnummer!');
    document.getElementById(id).value = bankrekeningnummer;
    document.getElementById(id).focus();
 }
}
</script>


[ Bericht 38% gewijzigd door Darkomen op 06-03-2007 13:14:59 ]
  dinsdag 6 maart 2007 @ 13:12:53 #74
12880 CraZaay
prettig gestoord
pi_46972062
Postbank-rekeningen kun je volgens mij niet toetsen. Die worden opvolgend uitgegeven waarna per transactie aan naam/nummer check plaatsvindt afaik.

De bankrekeningnummers kun je inderdaad wel toetsen. En waar je het ook voor gebruikt: sta in je input aub punten, spaties en al dan niet leading zero's toe. Niets zo irritant als een web app die je gaat vertellen hoe je iets precies in moet vullen

edit: Voorkauwwerk http://www.2question.com/demo/elf_proef.html
pi_46972156
oke, dan weet ik dat, en spaties, leading zero's en punten, oke will do, kan er zelf ook niet tegen

Hey, in php heb ik wel een mooie functie, kijken if ik die om kan zetten naar javascript, zit namelijk ook postbak bij
  dinsdag 6 maart 2007 @ 14:09:20 #76
12880 CraZaay
prettig gestoord
pi_46974020
Het is gewoon berekeken, dus met Math en consorten moet je een eind komen

Zou je een relevant stukje Postbank-validatie kunnen posten? Ben benieuwd hoe dat werkt.
pi_46975540
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
function CheckRekeningNummer(string, veld,id){
      var first = string.charAt(0);

      if( (first=="P") || (first=="p") ){
         var error = postbank(string);
      }
      else {
         var error = bankrekening(string);
      }
      return error;
   }


   function bankrekening(string) {
      deel1=string.substring(0,3)
      deel2=string.substring(4,11)
      controle_getal=eval(string.substring(12,14))
      getal=eval(deel1+deel2)

      if (getal%97==controle_getal){}//{window.alert("het rekeningnummer is juist")}
      else{
         return "Het veld Banknummer is onjuist.n";
      }
   }


   function postbank(string) {
      if (string.length<3) {
         return "Het veld Banknummer te kort voor postbanknummer.n"; 
      }
      else if(string.length>7)  {
         return "Het veld Banknummer te lang voor postbanknummer.n";
      }
   }


Dit heb ik ervan gemaakt

[ Bericht 1% gewijzigd door Darkomen op 06-03-2007 15:00:00 ]
  dinsdag 6 maart 2007 @ 16:14:17 #78
12880 CraZaay
prettig gestoord
pi_46978871
Ah, ok. Niet echt validatie of het een bestaand postbanknummer is dus (tenminste: het nummer zal wel bestaan, je kunt alleen niet berekenen of er een typefout gemaakt is).

Ik zou dit soort belangrijke checks overigens ook server side doen. Met Javascript is leuk, maar voorkomt natuurlijk geen verkeerde input.
pi_46979511
Nee, dat is zoals je zei niet te checken
Serversided kijk ik alleen na als ik de inhoud niet vertrouw
Er kunnen maar een paar users bij dit script en het is meer een simpele controle
pi_47002747
Ik wil dus de backgroundkleuren van divjes veranderen. In principe zijn er 3 mogelijkheden te weten:
- de achtergrond is blauw wanneer de muis niet op de div staat en de div ook niet is 'geselecteerd' (mbv een eerdere mouseup) ; tijdelijk effect
- de achtergrond is wit wanneer de muis wel op de div staat, maar de div niet is 'geselecteerd' (mbv een eerdere mouseup) ; tijdelijk effect
- de achtergrond is groen wanneer de div geselecteerd is ; blijvend effect (tot volgende selectie, maar dat moet nog ingebouwd worden)

Na wat lees en denkwerk (jaja) kwam ik op de volgende code... maar dat werkt toch niet helemaal aangezien de div na selectie toch weer blauw wordt als ik met de muis van de div af ga.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<script language="javascript">
function colorOver(div){
  if(document.getElementById(div).style.background!="green"){
   document.getElementById(div).style.background="white"
  }
}
function colorOut(div){
  if(document.getElementById(div).style.background!="green"){
   document.getElementById(div).style.background="blue"
  }   
}
function colorUp(div){
document.getElementById(div).style.background="green"
}
</script>


en een van de divjes (totaal zijn er 6, maar allen volgens de zelfde structuur)

1<div id="X" onmouseover="colorOver('X')" onmouseout="colorOut('X')" onmouseup="colorUp('X')"></div>


Bij de 2 if statements heb ik ook al geprobeerd of
1if(!(document.getElementById(div).style.background=="green"))

werkt, maar ook dat werkt niet. Het zal vast wel een simpel en stom klein dingetje zijn, maar ik zie het op dit moment even niet (zal ook wel aan de tijd liggen :P)
ウプピエ 八十三 &lt;&lt; u-pu-pi-e hachi-ju-san, ik denk ik zeg het er maar ff bij :P
pi_47005083
Ik denk dat het niet werkt omdat nadat je style.background='green' zet, de property style.backgroundColor = 'green' wordt gezet.

Is het niet handiger om in een stylesheet de kleuren te definieren en in javascript de classes te veranderen? (bijv. element.className = 'selected')
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
  woensdag 7 maart 2007 @ 09:32:12 #82
12880 CraZaay
prettig gestoord
pi_47006047
Je weet zeker dat die functies uit worden gevoerd? Het ziet er namelijk uit alsof dit zou moeten werken op het eerste gezicht.

Korter trouwens:

1
2
3
4
5
6
7
<div onmouseover="colorOver(this)" onmouseout="colorOut(this)" onmouseup="colorUp(this)"></div>

function colorOver(div){
  if (div.style.background != 'green') {
   div.style.background = "white";
  }
}


edit: Even getest, en het script doet precies wat het hoort te doen. Dat dat niet het gewenste gedrag is ligt dus niet aan het script

Je hebt namelijk de background gezet, en niet de backgroundColor. Ook al laat je de positionering e.d. leeg, ze worden toch gedeclareerd. Je had dit eenvoudig zelf kunnen testen met een alert(div.style.background). Je ziet dan dat de waarde hiervan "green none repeat scroll 0% 0%" is. En dat != green

Kortom: backgroundColor gebruiken. En nog beter idd met classNames werken zoals hierboven voorgesteld. Scheiding van gedrag en presentatie enzo.

[ Bericht 16% gewijzigd door CraZaay op 07-03-2007 10:07:11 ]
  woensdag 7 maart 2007 @ 22:19:05 #83
104583 cyberstalker
Een krachtig neen!
pi_47034199
Ik heb een functietje geschreven dat automatisch naar het volgende inputveld gaat wanneer het maximum aantal karakters is ingevuld.

Nu is het probleem dat het de waarde in Fx niet wordt bijgewerkt tot nadat de functie klaar is, terwijl de waarde in Opera direct wordt geupdate.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function auto_focus(event)
{
        var link        =       event.target;
        var inputvalue  =       link.value;
        var next_node   =       nextNode(link);

        if (inputvalue.length + 1 < link.getAttribute('maxlength'))
        {
                return false;
        }

        while (next_node.nodeName != link.nodeName && next_node != null)
        {
                next_node       =       nextNode(next_node);
        }

        if (next_node != null)
        {
                next_node.focus();
        }
}
Dit werkt zo in Firefox, omdat ik nu zelf 1 optel bij inputvalue.length. In opera kun je nu echter een karakter te weinig invullen.

Hoe kan ik dit zo maken dat het in alle browsers goed werkt? Ik gebruik overigens het event keypress:

1
2
3
4
5
6
7
for (i = 0; i < inputs.length; i++)
{
        if (inputs[i].hasAttribute('maxlength'))
        {
                inputs[i].addEventListener('keypress', auto_focus, false);
        }
}
Hope for the best, prepare for the worst.
pi_47035225
Waarschijnlijk zie je bij de keypress event in FF de oude waarde (voor het verwerken van de toetsaanslag), in Opera de nieuwe waarde (na het verwerken van de toetsaanslag). Krijg je wel de nieuwe waarde bij keyup?
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_47044569
Interessant scriptje!, en ik denk dat SR gelijk heeft.
pi_47405496
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
function makeObject()
{   var x;   
if (window.ActiveXObject) {   
   x = new ActiveXObject("Microsoft.XMLHTTP");   }
else if (window.XMLHttpRequest) {
      x = new XMLHttpRequest();   
   }   
return x;
}
var request = makeObject();

//AJAX the content
var $url;
var $div;
function check_content($url,$div){   
request.open('get', $url);   
request.onreadystatechange = parseCheck_content($div);   
request.send('');}
function parseCheck_content($div){   
if(request.readyState == 1){      
   document.getElementById($div).innerHTML = 'Loading...<br/><img src="spinner.gif" alt=""/>';   
   }   
if(request.readyState == 4){      
var answer = request.responseText;      
document.getElementById($div).innerHTML = answer;   }}


Ik ben bezig met een simel ajaxscriptje. Ik heb het basisscript wekzaam gekregen allen met mijn uitbreiding doet hij het niet.

IE geeft de foutmelding: "typen komen niet overeen".
pi_47406835
request.onreadystatechange verwacht een functie, jij kent er het resultaat van een functie aan toe (die geen waarde terrug geeft).

Lijn je code ook eens netjes uit, dit lijkt nergens op.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_47407316
1request.onreadystatechange = parseCheck_content($div);

Dit roept toch een functie aan? Volgens mij mis ik ergens iets? :@
pi_47408985
request.onreadystatechange is een functie die wordt uitgevoerd als de readystate veranderd. Het moet dus een functie zijn die uitgevoerd kan worden.
Bij jouw script wordt parseCheck_content($div) al uitgevoerd op het moment dat het aan request.onreadystatechange wordt toegekend.

1
2
3
4
5
6
7
8
9
10
11
12
13
function check_content($url, $div) {   
   request.open('get', $url);   
   request.onreadystatechange = function() {
      if (request.readyState == 1) {      
         document.getElementById($div).innerHTML = 'Loading...<br/><img src="spinner.gif" alt=""/>';   
      }   
      if (request.readyState == 4){      
         var answer = request.responseText;      
         document.getElementById($div).innerHTML = answer;   
      }
   }
   request.send('');
}


Waarom gebruik je die $-tekens? Het is toch geen php
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_47413697
Met die $ -tekens kan ik makkelijk zien wat variablen zijn.

Maar ik begrijp nu in ieder geval waar de fout zit! Dank je wel.
Ik zal morgen eens kijken hoe ik dit ga aanpassen.
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')