[JS] Probleem met variabele naam invoerveld form

Pagina: 1
Acties:

  • MyTi
  • Registratie: Oktober 2003
  • Laatst online: 08-10-2025
Ik gebruik een form waar ik een invoerveld heb met een variabele naam.
Nu wil ik er dmv een javascript voor zorgen dat bij het invullen van dit veld de inhoud overgenomen wordt in een ander invoerveld, zodat deze niet nogmaals daar ingevoerd hoeft te worden.
Eventueel kan dan de automatisch gekopieerde invoer wel nog gewijzigd worden in het 2e veld.

Het invoerveld met de variabele naam gebruikt haakjes in zijn variabele naam, en schijnbaar heeft mijn javascript daar problemen mee, ik heb op internet gezocht maar nergens een oplossing kunnen vinden helaas.

Naam invoerveld met variabele naam: products_name[variabele waarde], de variabele waarde is overigens voor de taal, afhankelijk van de waarde wordt de juiste taal voor de productnaam gekozen. Wanneer ik bijvoorbeeld een 4 vast in het javascript invoer, heeft het javascript nog problemen met de haakjes.

JavaScript:
1
2
3
4
5
6
7
function updatePageTitle() {
  var ProductName = document.forms["new_product"].products_name['4'].value;
  var PageTitle = document.forms["new_product"].products_pagetitle.value;
  if (PageTitle=="") {
  document.forms["new_product"].products_pagetitle.value=ProductName;
  }
}


Bij invoerveld met variabele naam gebruik ik deze:

JavaScript:
1
onKeyUp="updatePageTitle()"

Foutmelding: 'document.forms.new_product.products_name.4' is leeg of geen object.

Ook zonder de ' ' rondom 4 gaat het fout. Wie weet hoe ik dit probleem met waarschijnlijk de haakjes op kan lossen? Alvast erg bedankt.

[ Voor 12% gewijzigd door MyTi op 16-12-2005 11:11 ]


  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Ik snap even niet wat je bedoeld :?

Sowieso handig om je code tussen [norml]
JavaScript:
1
[/] te zetten, aangezien dat wat leesbaarder wordt.

Waarom geef je de waarde niet mee van je element die je wilt gebruiken in je functie?

JavaScript:
1
onkeyup="updatePageTitle(this.value)"

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • MyTi
  • Registratie: Oktober 2003
  • Laatst online: 08-10-2025
Het gaat even niet om de waarde, maar om het feit dat ik geen haakjes in de naam van het invoerveld kan gebruiken, omdat mijn javascript dat niet accepteerd.
Ik zou mijn javascript zo willen ombouwen, als dat kan, dat ik evengoed die naam van mijn invoerveld (met haakjes) kan gebruiken, dus dat het javascript de haakjes als onderdeel van de naam van het veld ziet ipv als javascriptvariabele of iet dergelijks.

Even een extra toelichting op de Foutmelding zodat mijn probleem misschien wat duidelijk wordt:

Foutmelding: 'document.forms.new_product.products_name.4' is leeg of geen object.

Het is logisch dat 'document.forms.new_product.products_name.4' leeg is of dat het javascript dit invoerveld niet kan vinden. Het invoerveld heet namelijk:
'document.forms.new_product.products_name[4]'.

[ Voor 36% gewijzigd door MyTi op 16-12-2005 11:16 ]


  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

JavaScript:
1
2
3
4
5
6
7
function updatePageTitle() {
  var ProductName = document.forms["new_product"]["products_name[4]"].value;
  var PageTitle = document.forms["new_product"].products_pagetitle.value;
  if (PageTitle=="") {
  document.forms["new_product"].products_pagetitle.value=ProductName;
  }
}


Werkt dat niet?

Programmer - an organism that turns coffee into software.


  • Eijkb
  • Registratie: Februari 2003
  • Laatst online: 20-04 11:05

Eijkb

Zo.

probeer eens

document.forms["new_product"].elements["products_name["4"]"].value;

["4"] kan dan bv ook <?=$productid;?> zijn icm PHP.

ps. Zie post hierboven _/-\o_

[ Voor 29% gewijzigd door Eijkb op 16-12-2005 11:25 ]

.


  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Eijkb schreef op vrijdag 16 december 2005 @ 11:25:
probeer eens

document.forms["new_product"].elements["products_name["4"]"].value;

["4"] kan dan bv ook <?=$productid;?> zijn icm PHP.

ps. Zie post hierboven _/-\o_
Dit gaat natuurlijk niet werken. Als 4 in het geval van TS ook een string kan zijn, dan moet de 4 tussen enkele ' '

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • MyTi
  • Registratie: Oktober 2003
  • Laatst online: 08-10-2025
Bij beide suggesties krijg ik de foutmelding: 'Object wordt verwacht'.

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 11:56

crisp

Devver

Pixelated

HTML:
1
2
3
<form id="new_product" action="whatever">
<input type="text" name="products_name[4]">
</form>

JavaScript:
1
var ProductName = document.forms['new_product'].elements['products_name[4]'].value;

maar gebruik maken van het 'this' keyword waar dat mogelijk is verdient altijd de voorkeur aangezien het trage lookups bespaard ;)

Intentionally left blank


  • MyTi
  • Registratie: Oktober 2003
  • Laatst online: 08-10-2025
Thx dat werkt. Iedereen verder bedankt voor de moeite.

Topic kan gesloten worden.

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

FYI, topics gaan niet altijd op slot hoor :)

Algemene gedragsregels (Netiquette) #topiceinde

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.

Pagina: 1