value's krijgen met javascript

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Reshad F

Reshad F

14/12/2011 19:39:20
Quote Anchor link
even kort maar duidelijk.

ik heb op internet al lopen zoeken maar niet echt gevonden wat ik wil.

ik wil zo iets

<html>
<body>

<select>
<option>Volvo</option>
<option>Saab</option>
<option>Mercedes</option>
<option>Audi</option>
</select>

</body>
</html>


maar dan moet het een textbox zijn en geen list, en als ik erop klik dat ik dan bijv uit een paar keuzes kan kiezen die dan als waarde in het textvakje komen te staan.

kan iemand me op weg helpen? en/of een leuk tut?
 
PHP hulp

PHP hulp

15/01/2025 22:56:05
 
Nick Dijkstra

Nick Dijkstra

14/12/2011 20:14:24
 
Reshad F

Reshad F

14/12/2011 22:20:53
Quote Anchor link
hmm nee niet zoietss ik bedoel meer iets van een textbox,

als ik met mijn muis op de textbox klik om er iets in te zetten ( waarde ) dan moet ik een popup box krijgen met OPTIONS die ik vooraf opgegeven heb bijv. net als in een select box hierboven en als je op een van die waardes klikt moet die waarde in de textbox komen te staan.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

15/12/2011 12:21:25
Quote Anchor link
Weet je hoe je divs moet tonen en verbergen? Je zet de select in een div die onzichtbaar is (display: none)
Met de onfocus event van de textbox maak je deze zichtbaar.
Via de onchange event van de select wijzig je de waarde van de textbox.
 
Reshad F

Reshad F

15/12/2011 13:04:04
Quote Anchor link
ehm ja ik heb hem onzichtbaar nu. maar hoe moet ik de onfocus en onchange gebruiken precies? zoiets?

<code>

<input type='textbox' name="gerecht" id='textbox1' onfocus="show menuoption(this);" >



<div class="menuoption">
<select name="menuoption" onchange="">
<option>kreeft menu</option>
<option>biefstuk menu</option>
<option>tonijn menu</option>
<option>paardenbiefstuk menu</option>
<option>tapas menu</option>
<option>italiaans menu</option>
</select>
</div>



</code>

Toevoeging op 15/12/2011 13:55:49:

ik heb nu een script wat werkt.
en ik heb mijn textvakjes.

alleen is er een probleem..
de tekstvakjes worden dynamisch aangemaakt met de volgende code

$("#TextBoxesGroup").append('<div id="TextBoxDiv'+counter+'"><label>Persoon #'+ counter + ' : </label>' + '<input type="text" name="gerecht"' + counter + '" id="textbox' + counter + '" ></div>');

counter++;
});

en de tekst hieronder dat moet erbij komen te staan. maar als ik dit erbij zet wordt werkt het script hierboven niet door de enkele quotes; en wordt het niet als onFocus en als onBlur gezien maar als tekst volgens mij en dan laat hij niks van die optionsmenu zien maar zet ik dubbele quotes dan krijg ik het script erboven wel werkend maar geen onblur of onfocus te zien.

enig idee?

onfocus="setVisibility('menuoption ','inline')"; onBlur="setVisibility('menuoption','none')";
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

15/12/2011 14:03:45
Quote Anchor link
Beter om de div een id te geven en de select ook bv menuselect
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
function ShowDiv(ID) {
    document.getElementById("menuoption").style.display = "block"
}

function HideDiv(ID) {
    document.getElementById("menuoption").style.display = "none"
}

function ChangeText() {
    document.getElementById("textbox1").value = document.getElementById("menuselect").value;
    HideDiv("menuoption");
}
//HTML
<input type="text" name="textbox1" id="textbox1"
    onfocus="javascript:ShowDiv('menuoption')" />
<select name="menuselect" id="menuselect"
    onchange="javascript:ChangeText()">
 
Ozzie PHP

Ozzie PHP

15/12/2011 14:07:30
Quote Anchor link
Ger, foutje in de functies... je moet een ID als parameter meegeven maar in de functie staat een vaste ID. Zou dan zo moeten.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
function ShowDiv(ID) {
    document.getElementById(ID).style.display = "block";
}
 
Reshad F

Reshad F

15/12/2011 14:23:06
Quote Anchor link
maar het probleem is dat die onfocus en onblur niet werken omdat het textvakje dynamisch is. het wordt gecreerd door het scriptje in mijn vorige post
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$("#TextBoxesGroup").append('<div id="TextBoxDiv'+counter+'"><label>Persoon #'+ counter + ' : </label>' + '<input type="text" name="gerecht"' + counter + '" id="textbox' + counter + '" ></div>');

counter++;
});

?>
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

15/12/2011 14:32:02
Quote Anchor link
Ozzie je hebt helemaal gelijk, ook ik maak fouten ;-)
Reshadd, als je de textboxen met jquery maakt dan kan daarmee ook een functie aan de focus event binden.
 
Reshad F

Reshad F

15/12/2011 14:37:40
Quote Anchor link
hoe doe ik dit? ik heb niet zo heel veel verstand van jQuery het script wat ik gebruik heb ik van internet en heb het zelf beetje aangepast aan mijn form maar geen idee hoe ik dan dit kan samen voegen

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
<?php
// events
onfocus="setVisibility('menuoption ','inline')"; onBlur="setVisibility('menuoption','none')";


//werkend jQuery script

$("#TextBoxesGroup").append('<div id="TextBoxDiv'+counter+'"><label>Persoon #'+ counter + ' : </label>' + '<input type="text" name="gerecht"' + counter + '" id="textbox' + counter + '" ></div>');

counter++;
});



?>
 
Niels K

Niels K

15/12/2011 15:20:41
Quote Anchor link
Hoi Reshadd,

Inline JS is niet netjes.
Met JQuery kan je gewoon het volgende doen.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
$('#id').focus(function() {

});

$('#id').blur(function() {

});
 
Erwin H

Erwin H

15/12/2011 15:32:46
Quote Anchor link
Dat gaat alleen niet werken als je element dynamisch wordt aangemaakt wat hier gebeurt. JQuery events worden namelijk gebonden aan een element bij het laden van een document. Op het moment dat een element later wordt aangemaakt, worden de events niet automatisch gebonden, dat moet je dus zelf doen. Dit kan bijvoorbeeld door de events in een functie te plaatsen en die functie dan aan te roepen op het moment dat je een element aanmaakt.

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
function bind_events(element){
  $(element).focus(function() {

  });

  $(element).blur(function() {

  });
}

//en in de functie waarin je het element aanmaakt:
  var el = $("#TextBoxesGroup").append('<div id="TextBoxDiv'+counter+'"><label>Persoon #'+ counter + ' : </label>' + '<input type="text" name="gerecht"' + counter + '" id="textbox' + counter + '" ></div>');

  counter++;
  bind_events(el);


Maar pas op: bij het handmatig binden van events, kan het voorkomen dat je een bepaald event twee maal bind aan hetzelfde element als je het niet goed doet. In dat geval zal de functie ook twee keer uitgevoerd worden, wat zeer vreemde effecten kan hebben!
Gewijzigd op 15/12/2011 15:34:45 door Erwin H
 
Niels K

Niels K

15/12/2011 15:36:46
Quote Anchor link
Erwin,

Je hebt gelijk, ik had het topic niet helemaal gelezen dus dat was mij heel even ontgaan.

Overigens, ipv die functie te gebruiken kan je na het aanmaken van de elementen de elementen ook middels de each functie doorlopen. Dan doe je het helemaal volgens JQuery.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
$('').each(function(counter, element) {
    $(element).focus(function() {

    });
    
    $(element).blur(function() {

    });
});


Extra toevoeging: Wanneer je op meerdere events wil controleren kan je de (koppel) functie bind gebruiken.
 
Wouter J

Wouter J

15/12/2011 15:39:38
Quote Anchor link
@Erwin en Niels, met jQuery 1.7.x is er een totaal nieuw event systeem gekomen. De oude events werken nog steeds, maar beter is het om het nieuwe te gebruiken:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
$('select').on('focus', 'option', function() {
  // Doe wat
});

Meer informatie: http://blog.jquery.com/2011/11/03/jquery-1-7-released/

In jQuery 1.3.x en hoger kun je jQuery.fn.live() gebruiken en in jQuery 1.4.2 en hoger kun je jQuery.fn.delegate() gebruiken. Maar het beste en het snelst is jQuery.fn.on() in 1.7.x en hoger.

Met live kun je ook meerdere events tegelijkertijd toevoegen en je kunt data meesturen. Maar het grootste verschil is toch wel de manier van parent child in de events, dit is vooral handig met heel veel childs waar je 1 event op wilt.

Overigens kun je met raw JS ook gewoon outline events maken:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
document.getElementById('box').onclick = function() {
  console.log('You clicked!');
};
Gewijzigd op 15/12/2011 15:41:40 door Wouter J
 
Niels K

Niels K

15/12/2011 15:42:30
Quote Anchor link
Ja dat klopt, die functie is geniaal.
 
Erwin H

Erwin H

15/12/2011 15:50:58
Quote Anchor link
Wouter, dank voor de interessante lectuur. Enige vraag die wel bij mij open blijft staan: moet je nog steeds de events handmatig binden op het moment dat je een element dynamisch aan maakt? Ik kan het zo snel niet vinden in de link die je meegaf, maar ik krijg het gevoel dat dat niet veranderd is.
 
Niels K

Niels K

15/12/2011 15:54:24
Quote Anchor link
Erwin,

Zie het volgende voorbeeld, oftewel niet dus:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
var count = 0;
$("body").on("click", "p", function(){
    $(this).after("<p>Another paragraph! "+(++count)+"</p>");
});
 
Wouter J

Wouter J

15/12/2011 15:58:47
Quote Anchor link
@Erwin, zowel live() als delegate() als on() zijn gemaakt zodat je de events niet opnieuw hoeft te binden. Het is dus niet nodig.
 
Erwin H

Erwin H

15/12/2011 16:31:28
Quote Anchor link
Hmm, moeten we dan binnenkort even mee aan de slag, want dat is wel een heel handige manier dan. Vooral het binden/unbinden met dynamische elementen bezorgt me nog wel eens kopzorgen.
DANK dus voor de tip!
 
Reshad F

Reshad F

16/12/2011 11:04:30
Quote Anchor link
Erwin H op 15/12/2011 15:32:46:
Dat gaat alleen niet werken als je element dynamisch wordt aangemaakt wat hier gebeurt. JQuery events worden namelijk gebonden aan een element bij het laden van een document. Op het moment dat een element later wordt aangemaakt, worden de events niet automatisch gebonden, dat moet je dus zelf doen. Dit kan bijvoorbeeld door de events in een functie te plaatsen en die functie dan aan te roepen op het moment dat je een element aanmaakt.

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
function bind_events(element){
  $(element).focus(function() {

  });

  $(element).blur(function() {

  });
}

//en in de functie waarin je het element aanmaakt:
  var el = $("#TextBoxesGroup").append('<div id="TextBoxDiv'+counter+'"><label>Persoon #'+ counter + ' : </label>' + '<input type="text" name="gerecht"' + counter + '" id="textbox' + counter + '" ></div>');

  counter++;
  bind_events(el);


Maar pas op: bij het handmatig binden van events, kan het voorkomen dat je een bepaald event twee maal bind aan hetzelfde element als je het niet goed doet. In dat geval zal de functie ook twee keer uitgevoerd worden, wat zeer vreemde effecten kan hebben!



hmm ik snap er niet veel van eerlijk gezegd, maar heb nu dus zoiets staan

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
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
$("#TextBoxesGroup").append('<div id="TextBoxDiv'+counter+'"><label>Persoon #'+ counter + ' : </label>' + '<input type="text" name="gerecht' + counter + '" id="textbox' + counter + '" ></div>');
 
 
    counter++;
    bind_events(element);
     });



//


<script type="text/javascript">
function bind_events(element){
  $(element).focus(function() {
                            setVisibility('menuoption','inline')

  });

  $(element).blur(function() {
                           setVisibility('menuoption','none')

  });
}
</script>



// en hieronder het scriptje van de zichtbaar/onzichtbaar maken zelf

<script type="text/javascript">
function setVisibility(id, visibility) {
document.getElementById(id).style.display = visibility;
}
</script>


wat doe ik nu fout?
Gewijzigd op 16/12/2011 11:06:37 door Reshad F
 
Erwin H

Erwin H

18/12/2011 09:38:29
Quote Anchor link
Op het moment dat je bind_events aanroept moet je wel het element meegeven waaraan je de functie wil binden. Dus:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
$("#TextBoxesGroup").append('<div id="TextBoxDiv'+counter+'"><label>Persoon #'+ counter + ' : </label>' + '<input type="text" name="gerecht' + counter + '" id="textbox' + counter + '" ></div>');
  bind_events("#TextBoxDiv"+counter);
  counter++;
});
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.