[html] <button> element neemt vreemde waarde aan

Pagina: 1
Acties:

  • wzzrd
  • Registratie: Februari 2000
  • Laatst online: 10-05 12:50

wzzrd

The guy with the Red Hat

Topicstarter
Is dit een IE6 bug of een feature ;) :
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
<?
if (isset($verzend)) echo "waarde = ".$verzend;
?>
<form action="<? echo $PHP_SELF;?>" method="post">
<button type=submit name=verzend value=verversknop>
    Ververs
</button>
<button type=submit name=verzend value=verzendknop>
    Verzend
</button>
</form>
?>

In Mozilla neemt $verzend netjes de waarde aan van de value in het button element, en komt er dus "waarde = verversknop" te staan als je daarop drukt. In IE6 however, is de waarde van $verzend altijd "Verzend" de tekst tussen het tweede paar button-tags...

Irritant!!!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

euhh button is toch een enkelvoudige tag :?
code:
1
<button name="sjaak" value="pauper" onClick="alert ( 'bever' );"/>

en vergeet je attribuut-waarden niet te quoten

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • wzzrd
  • Registratie: Februari 2000
  • Laatst online: 10-05 12:50

wzzrd

The guy with the Red Hat

Topicstarter
Het quoten of niet, maakt hoegenaamd geen hol uit, en het is een "dubbele" tag. Zie http://www.dto.tudelft.nl/mirhtml/. Niet echt van het w3c, maar die zeggen het ook.

Maar thanks iig :)

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Op donderdag 21 februari 2002 14:42 schreef wzzrd het volgende:
Het quoten of niet, maakt hoegenaamd geen hol uit,
Maakt hoegenaamd een hol uit voor de leesbaarheid en voor evt. overstap naar xhtml
en het is een "dubbele" tag.
ja, idd.

Nooit geweten.

ook nooit gebruikt, vandaar :D

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • _JGC_
  • Registratie: Juli 2000
  • Laatst online: 07:15
Via de search kwam ik dit topic tegen, ik zit nml met hetzelfde probleem.

Ik heb hier een form die dynamisch gegenereerd wordt mbv een PHP script. Dit PHP script heeft als output 1 form met daarin steeds deze elementen:

code:
1
2
3
4
5
6
7
8
<tr>
  <td align="right" valign="top"><b>test9</b></td>
  <td valign="top" align="left">
    <button type="submit" value="test9" name="mod_web">Modify</button>
    &nbsp;
    <button type="submit" value="test9" name="del_web">Delete</button>
  </td>
</tr>

Waarbij del_web en mod_web als naam nog kunnen veranderen in del_mail, del_sql en de soortgelijke mod_ namen. De value neemt de naam van het te verwijderen geval aan.

Nou werkt dit zooitje dus perfect met mozilla, maar IE6 vertaalt intern de button tags gewoon naar dit:
code:
1
<input type="submit" value="Delete" name="del_web">

Ik mis dus een value. Verder maakt IE6 er nog een zooitje van: behalve het wegmoffelen van een value geeft ie nml gewoon alle <button type="submit"> buttons mee als waarde. Op het moment dat ik met if statements ga controleren of ik die buttons mee heb gekregen, blijkt dus dat ik de naam van alle knoppen in de bijbehorende variabelen mee heb gekregen, waardoor alle statements meteen true zijn. Ik krijg dus sowieso altijd mijn delete functie voor mn neus (is eerste in if-then-else blok :P), welke knop ik ook klik.

Bovenstaande wil ik graag met een form methode doen, omdat ik tot nu toe voor alles HTML_QuickForm_Controller gebruikt heb. Voor zover ik weet ondersteunt die ook geen meerdere forms op een pagina. Mijn vorige implementatie die ook niet werkte, gebruikte ook 2 buttons genaamd mod_pkg en del_pkg, waarbij per categorie een form werd gemaakt met een hidden field met daarin het soort pakket waar het mee te maken heeft.

[ Voor 9% gewijzigd door _JGC_ op 04-10-2004 13:20 ]


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

De waarden van button-elementen worden inderdaad altijd meegestuurd dit itt input type="submit" buttons. Dat IE vervolgens ook nog eens de verkeerde waarde meestuurd is inderdaad e g slordig en m.i. ook gewoon een bug cq het niet volgen van standaarden.

Om de functionaliteit zoals jij die wilt toch te kunnen gebruiken zou je met behulp van JS hidden inputs kunnen vullen:

HTML:
1
2
3
4
<input type="hidden" name="action" value="mod_web" />
<input type="hidden" name="item" value="test9" />
<input type="submit" value="Modify" onclick="this.form.elements['action'].value='mod_web';" />
<input type="submit" value="Delete" onclick="this.form.elements['action'].value='del_web';" />

Intentionally left blank


  • _JGC_
  • Registratie: Juli 2000
  • Laatst online: 07:15
Ik denk persoonlijk dat ik de boel overboord ga gooien met die 100 knoppen voor 50 items:

code:
1
2
3
4
5
6
7
8
9
10
{pkg_type}
[ ] item1
[ ] item2
[ ] item3
{pkg_type}
[ ] item1
[ ] item2
[ ] item3

[modify] [delete]


Mooie is dan dat je niet 50x confirmation hoeft te doen als je alles weg wilt keilen.
Nadeel van jouw oplossing is dat de client per se javascript aan moet hebben. Niet dat mij dat boeit, aangezien de andere optie het voorschrijven van een W3C compatible browser is, welke helaas dus niet de browser is die 95% van de gebruikers gebruikt.

  • _JGC_
  • Registratie: Juli 2000
  • Laatst online: 07:15
Ik heb net je oplossing geprobeerd, alleen nou komt het leuke...
mozilla browsers pakken dat stukje javascript niet op, of ze passen het toe nadat het form al verstuurd is :X

Edit:
met een alert erachteraan lijkt mij wel dat het veld geset wordt, alleen wordt eerst alle data voor de submit verzameld, waarna de javascript pas uitgevoerd wordt.

[ Voor 34% gewijzigd door _JGC_ op 04-10-2004 14:38 ]


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

_JGC_ schreef op 04 oktober 2004 @ 14:27:
Ik heb net je oplossing geprobeerd, alleen nou komt het leuke...
mozilla browsers pakken dat stukje javascript niet op, of ze passen het toe nadat het form al verstuurd is :X
Lijkt me sterk; we gebruiken het hier op GoT ook al jaren...

Intentionally left blank


  • _JGC_
  • Registratie: Juli 2000
  • Laatst online: 07:15
Vreemd, idd gebruikt de preview boel van GoT het ook:

code:
1
<input onclick="this.form.elements['item'].value='blaat';" name="mod_web" value="Modify" type="submit" />


In IE6 is mijn "item" variabele gevuld met blaat, in mozilla is de item variabele dus leeg.


8)7 8)7
2x raden wat blijkbaar een gereserveerde variabelenaam is volgens mozilla browsers? juist ja: ITEM

ik knip en plak je bovenstaande stukkie, test het, werkt gewoon. Ik pas variabelenaam aan naar item, werkt niet meer 8)7

[ Voor 44% gewijzigd door _JGC_ op 04-10-2004 14:54 ]

Pagina: 1