Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

[Javascript] Text toevoegen in textbox...

mw22
11 antwoorden
  • Dag mensen,
    ik heb de volgende vraag:

    Ik heb 1 textbox, en daarin typt men een getal.
    Dit getal zijn meters, dus ik wil dat Javascript er een 'm' achter zet.
    Tot zover ben ik gekomen:
    [code:1:adea5728d9]function meters()
    {
    start=document.jacht.lengte.value
    document.jacht.lengte.value=start+" m"
    }[/code:1:adea5728d9]
    En de textbox roept de functie aan met onblur().
    Maar als ik in de textbox het getal verander, komt er WEER een 'm' achter.
    Hoe kan ik dit voorkomen?

    Alvast dank,
  • http://www.devguru.com/Technologies/ecmascript/quickref/isnan.html

    - Bas
  • Bedankt :) Je hebt me een aardig eind op weg geholpen.
    Maar nu zit ik met een functie, en die werkt:
    [code:1:a49223ba31]function meters(veld) {
    start=document.jacht.veld.value
    if (!isNaN(start)) {
    start=document.jacht.veld.value+" m"
    document.jacht.veld.value=start
    }
    }[/code:1:a49223ba31]
    Maar nu wil ik dit in meerdere textboxes gebruiken.
    Dus ik wil de iets meegeven met de functie.
    namelijk de veldnaam.
    Maar hoe kan ik die veld naam nou verwerken in:
    document.jacht.veld.value

    Want zoals het er nu staat, ziet ie veld als DE veldnaam.

    Alvast bedankt voor het antwoord.
  • Alle velden een unieke ID meegeven en vervolgens het scriptje een beetje aanpassen zodat het JS DOM gebruikt:[code:1:fee265cda2]function meters(veld) {
    var field = document.getElementById(veld);
    var start = field.value;
    if (!isNaN(start)) {
    start=start+" m";
    field.value=start;
    }
    }[/code:1:fee265cda2]Ben geen JavaScript expert, maar zoiets zou het moeten zijn.

    - Bas
  • function meters(veld) {
    var field = document.getElementById(veld);
    var start = field.value; <<<<< object vereist[/color:c02dc432ad]
    if (!isNaN(start)) {
    start=start+" m";
    field.value=start;
    }
    }

    Die error krijg ik, wat is er loos?
  • Misschien [i:1fd69fd206]value[/i:1fd69fd206] vervangen door [i:1fd69fd206]getValue()[/i:1fd69fd206]:[code:1:1fd69fd206]function meters(veld) {
    var field = document.getElementById(veld);
    var start = field.getValue();
    if (!isNaN(start)) {
    start=start+" m";
    field.setValue(start);
    }
    }[/code:1:1fd69fd206]Je zult ff zelf moeten zoeken of wachten tot iemand anders je helpt, want vanaf hier is het voor mij ook een kwestie van "gokken".

    - Bas
  • Je kan ook gewoon voor de "old-fashioned" methode kiezen en de elementen uit de form via de [i:689cac92ab]forms [/i:689cac92ab]en [i:689cac92ab]elements [/i:689cac92ab]collecties aanspreken.
    [code:1:689cac92ab]
    function meters(veld) {
    var field = document.forms["jacht"].elements[veld];
    var start = field.value;
    if (!isNaN(start)) {
    start=start+" m";
    field.value=start;
    }
    }
    [/code:1:689cac92ab]
    Overigens, als je de functie onblur aanroept vanuit een text input kan je nog beter [i:689cac92ab]this[/i:689cac92ab] meegeven:
    [code:1:689cac92ab]
    <input type="text" onblur="meters(this)" />
    [/code:1:689cac92ab]
    [code:1:689cac92ab]
    function meters(veld) {
    var start = veld.value;
    if (!isNaN(start)) {
    start=start+" m";
    veld.value=start;
    }
    }
    [/code:1:689cac92ab]
  • Bas, ik denk dat je 'nodeValue' zoekt. Neem anders de DOM2 Quick Reference sidebar (te vinden op devedge.netscape.com).
  • nodeValue zal niet werken (tenzij je eerst een attribute-node selecteert). Een andere optie is getAttribute gebruiken.

    Voorbeeldjes (ongetest):
    [code:1:e0edd5dc70]
    var field = document.getElementById(veld);
    var start = field.getAttributeNode("value").nodeValue;
    [/code:1:e0edd5dc70]
    [code:1:e0edd5dc70]
    var field = document.getElementById(veld);
    var start = field.getAttribute("value");
    [/code:1:e0edd5dc70]
  • Ik denk dat een getAttribute of getAttributeNode de letterlijke tekst van de attribute 'value' weergeeft (of zou moeten weergeven).
    http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-one-html.html
    Ziet het dom atttribuut 'value'.
    getAttribute("value") is dus hetzelfde als de defaultValue dom attribuut.

    Liever had ik gehad dat ook de html-attributen veranderd zou worden, maar ja…
  • Annie, jou oplossing werkt. Bedankt :)
    Ik heb alleen onchange() gebruikt, dan komt er niets in te staan als je alleen even met de cursor er in en eruit gaat.

    Tnx

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.