velden formulier aanmaken

Status
Niet open voor verdere reacties.

ErnstM

Gebruiker
Lid geworden
28 jan 2007
Berichten
32
Hallo,
Ik ben bezig met een formulier dat moet helpen bij het doorzoeken van mijn database.
Nu heb ik een knop met daarop "zoekterm toevoegen". Zo gauw je daar op klikt verschijnt er een nieuw tekstveld. Dit werkt. Maar ik wil de gebruiker ook de keuze geven om of op beiden zoektermen te zoeken (AND) of op een van beiden (OR).
Hiervoor worden dan ook 2 radio buttons aangemaakt (AND of OR). Ook dat werkt. Maar nu is het probleem dat ik achter die radio buttons geen tekst kan zetten. Er staan nu dus alleen maar 2 rondjes....

Weet iemand hoe dit moet? Ik krijg het namelijk met document.write niet op de goede plek.

PHP:
<html>
<head>
<title>Zoeken</title>
</head>
<body>


<script type="text/javascript" language="javascript">
function veldtoevoegen()
{
var zoekterm, zoeken = document.getElementById('zoeken');


zoekterm = document.createElement('INPUT');
zoeken.insertBefore(zoekterm, document.getElementsByTagName('INPUT').item(1));
zoekterm.setAttribute('name', '2ezoekterm');
zoekterm.setAttribute('maxlength', '20');
zoekterm.setAttribute('size', '20');
zoekterm.setAttribute('style', 'margin-right: 10px');
zoekterm.setAttribute('type', 'text');


keuze1 = document.createElement('INPUT');
zoeken.insertBefore(keuze1, document.getElementsByTagName('INPUT').item(2));
keuze1.setAttribute('name', 'AND');
keuze1.setAttribute('style', 'margin-right: 10px;');
keuze1.setAttribute('type', 'radio');
keuze1.setAttribute('value', 'keuze');


keuze2 = document.createElement('INPUT');
zoeken.insertBefore(keuze2, document.getElementsByTagName('INPUT').item(3));
keuze2.setAttribute('name', 'OR');
keuze2.setAttribute('style', 'margin-right: 10px;');
keuze2.setAttribute('type', 'radio');
keuze2.setAttribute('value', 'keuze');

}
</script>

<form id='zoeken' name='zoeken' action='#'>
<a href='#' onclick='veldtoevoegen();'>Zoekterm toevoegen</a>
<br/><input type='text' value='hieronder' size='30' maxlength='30'/><br/>

<br/><input type='text'  value='hierboven' size='30' maxlength='30' />
</form>


</body>
</html>
 
Laatst bewerkt:
Eerst elementen aanmaken als wrap? Bijvoorbeeld een label-element?
 
Zoals je het nu doet hebben alle nieuwe zoekvelden dezelfde naam, en dat gaat later gegarandeerd voor problemen zorgen. Dat probleem kan je ook in jou code vrij makkelijk aanpassen, maar daarmee heb je nog steeds niet de gewenste tekst bij de radiobuttons.
Daarom heb ik in onderstaand voorbeeld gebruik gemaakt van een extra <span>-tag waarvan ik de "innerHTML" aanpas.
HTML:
<html>
  <head>
    <title>Zoeken</title>
    <script type="text/javascript" language="javascript">
      var iTeller=0;
      var sTekst="";
      function veldtoevoegen(){
        iTeller++;
        sTekst=sTekst + "<br/><input type='text' name='txtZoek" + iTeller + "' size='20' maxlength='20'>";
        sTekst=sTekst + "<input type='radio' name='optAnd" + iTeller + "'>AND";
        sTekst=sTekst + "<input type='radio' name='optOR" + iTeller + "'>OR";
        document.getElementById("Extra").innerHTML=sTekst;
      }
    </script>
  </head>
  <body>
    <form id='zoeken' name='zoeken' action='#'>
      <a href='#' onclick='veldtoevoegen();'>Zoekterm toevoegen</a>
      <br/><input type='text' value='hieronder' size='30' maxlength='30'/>
      <span id='extra'></span>
      <br/><input type='text'  value='hierboven' size='30' maxlength='30' />
    </form>
  </body>
</html>
Met vriendelijke groet,
JHx.

PS: jou code werkt bij mij alleen maar als ik de "insertBefore" achter de "setAttribute" plaats
 
Laatst bewerkt:
JHx ontzettend bedankt! Dit was precies wat ik bedoelde.

Voor mensen die dit stuk code ook nog willen gebruiken:
PHP:
 document.getElementById("Extra").innerHTML=sTekst;
Moet worden:
PHP:
document.getElementById("extra").innerHTML=sTekst;
Het is namelijk bij Firefox wel hoofdletter gevoelig, en bij ie niet.

Nogmaals bedankt,
Ernst
 
graag gedaan hoor!
en ja ... je hebt gelijk wat die verbetering betreft...
MS IE valt daar niet zo gauw over, maar ik vermoed dat bvb Mozila er wel degelijk problemen mee heeft... of vergis ik mij ???
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan