[HTML] FireFox: hoe submit form met enter?

Pagina: 1
Acties:
  • 204 views sinds 30-01-2008
  • Reageer

  • JayVee
  • Registratie: Mei 2002
  • Laatst online: 14-11-2025

JayVee

shibby++!

Topicstarter
Hey. Ik heb hier een raar probleem met het posten van een form met FireFox (0.9) onder Windows XP. Pagina is XHTML 1.1 strict (mocht dat ook maar iets uitmaken :D )
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<script type="text/javascript">
  function submit () { alert('call to submit'); }
</script>

<form name="w00t" onsubmit="alert('submit');">
  <input type="hidden" />

  <label for="in1">Shibby</label>  <input id="in1" type="image" src="del.gif" />

  <label for="in2">Sweet</label>  <input id="in2" type="image" src="del.gif" />

  <input type="text" name="addrow" size="15" value="" />
  <input type="submit" src="add.gif" name="submit" value="Voeg to" />
</form>
Ik heb name / value en wat andere attributen weggelaten om het overzichtelijk te houden. Ziet er uiteindelijk ongeveer zo uit:
Afbeeldingslocatie: http://home.student.utwente.nl/j.versteeg/p1x0rz/form_screenie.gif

Ik heb dus een form met wat regels (hier shibby en sweet, staan in een tabel), die ik een voor een wil kunnen deleten met een delete icon. Helemaal onderaan komt een input veld om een nieuwe regel toe te voegen.
Als ik op de plaatjes klik gaat het prima!

Het probleem doet zich voor als ik in de text input iets schrijf en dan op enter druk. Met IE gaat het goed, maar FireFox post dan alsof ik op het eerste delete icon heb geklikt.

Moet ik per ze twee forms gebruiken? Dat doe ik liever niet aangezien het dan in een <td> moet en die dan groter wordt (dan de tekst). Daarnaast is het minder mooi vind ik.


Daarnaast heb ik nog een ander raar probleem, maar dat zal wel meer met (mijn) javascript (skills) algemeen te maken hebben: de form onsubmit=alert() werkt zo wel. Maar als ik 'submit();' gebruik gebeurt er niets! Hoe kan dat?

ASCII stupid question, get a stupid ANSI!


  • RSpliet
  • Registratie: Juni 2003
  • Laatst online: 27-11-2025

RSpliet

*blink*

voor die 2e, probeer eens onsubmit="javascript:submit();" in te vullen.

Schaadt het niet, dan baat het niet


  • Superdeboer
  • Registratie: December 2002
  • Niet online

Superdeboer

Sa-weee-tah

Voor die tweede:

Gebruik niet submit() maar neem daar een ander woord voor... De JavaScript console roept steevast "submit() is not a function," ook als je onsubmit="javascript:submit();" gebruikt.

Als je dit gebruikt en aanroept lukt het ineens wel ;)
HTML:
1
2
3
4
5
<script type="text/javascript">
 <!--
  function saweeetah() { alert('call to submit'); }
 //-->
</script>

When I write my code, only God and I know what it means. One week later, only God knows.
Hell yes it's a Cuban Cigar, but I'm not supporting their economy, I'm burning their fields.


  • JayVee
  • Registratie: Mei 2002
  • Laatst online: 14-11-2025

JayVee

shibby++!

Topicstarter
Ah, tweede probleem is idd opgelost. Jammer dat de FireFox Javascript Console daar niets over zegt.
offtopic:
Hey! Wij zijn ud grid maatjes @ Sa-weee-tah. En moet je raden wie dit logo ooit heeft gemaakt ;)

ASCII stupid question, get a stupid ANSI!


  • Superdeboer
  • Registratie: December 2002
  • Niet online

Superdeboer

Sa-weee-tah

JayVee schreef op 17 juni 2004 @ 23:25:

Het probleem doet zich voor als ik in de text input iets schrijf en dan op enter druk. Met IE gaat het goed, maar FireFox post dan alsof ik op het eerste delete icon heb geklikt.

Moet ik per ze twee forms gebruiken? Dat doe ik liever niet aangezien het dan in een <td> moet en die dan groter wordt (dan de tekst). Daarnaast is het minder mooi vind ik.

Ik heb zo een beetje rond gelezen en ik heb begrepen dat dit default behavior is van respectievelijk IE en Moz/Firefox... Twee forms zou echter inderdaad meteen je hele probleem oplossen. Je probleem met die <td> snap ik niet eigenlijk, maar ik ken je layout verder ook niet. Je kunt toch gewoon elke form in een eigen divje stoppen en die strak tegen elkaar aan zetten? :)

offtopic:
Dat icon komt inderdaad daar vandaan; jij bent die dude met die dikke P4 toch? :D Doe Harm-Jan de groeten van me als je 'm spreekt. :P ;)

When I write my code, only God and I know what it means. One week later, only God knows.
Hell yes it's a Cuban Cigar, but I'm not supporting their economy, I'm burning their fields.


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:46

crisp

Devver

Pixelated

een functie submit noemen is geen probleem, maar als je ergens een name="submit" gebruikt overschrijf je daarmee de functie weer (en in deze context tevens de submit-method van je form).
Verder valideerd dit formulier natuurlijk niet naar xhtml strict, en een deel van je probleem wordt veroorzaakt door het feit dat een input type="image" natuurlijk ook als submit button fungeert (en je laatste input moet ook type="image" zijn - je maakt er immers een plaatje van).

Ik zou die laatste 2 elementen gewoon in een los formulier zetten.

[ Voor 7% gewijzigd door crisp op 18-06-2004 07:29 ]

Intentionally left blank


  • JayVee
  • Registratie: Mei 2002
  • Laatst online: 14-11-2025

JayVee

shibby++!

Topicstarter
Nou, dit is een uitknipsel uit de originele source (die wel valideerd!) om het even overzichtelijk te houden. Daarom ook het foutje met het laatste input plaate.

Het zit in een grote dynamische tabel waarvan ik niet weet hoe breed (inhoug van tds EN aantal tds!) en hoe lang (aantal trs) hij wordt. Het dus opsplitsen in twee divs wordt lastig aangezien die onderste (nieuwe regel invoeren) even breed moet zijn.
Misschien dat dat op te lossen is met een containter div, dat zou ik moeten proberen.

Is er verder geen manier om het op te lossen? Bijvoorbeeld door met javascript het op enter drukken te negeren?
Bijv:
code:
1
2
3
4
5
function checkkey( key ) {
  if (key == return ) return false;
}

<input type="text" onkeypress="chekckey( this.keypressed? )">

ASCII stupid question, get a stupid ANSI!


  • André
  • Registratie: Maart 2002
  • Laatst online: 18-05 16:30

André

Analytics dude

Je kunt de enterkey wel negeren:
code:
1
2
3
4
5
6
7
function Bla(e)
{
  if (e.keyCode == 13) { return false; }
  return true;
}

onkeyDown = Bla(evt);

  • JayVee
  • Registratie: Mei 2002
  • Laatst online: 14-11-2025

JayVee

shibby++!

Topicstarter
Alleen hoe moet ik Bla dan aanroepen? Ik wil uiteraard het event meesturen, maar hoe krijg ik die? In de Mozilla DOM manual staat hoe ik de 'event handling code' kan krijgen. And theen?

ASCII stupid question, get a stupid ANSI!


  • André
  • Registratie: Maart 2002
  • Laatst online: 18-05 16:30

André

Analytics dude

Zo:
JavaScript:
1
2
3
4
5
6
7
function Bla(e)
{
  if (e.keyCode == "13") { alert("enter"); return false; }
  return true;
}

<body onkeypress="Bla(event)">

[ Voor 18% gewijzigd door André op 18-06-2004 09:25 ]


  • JayVee
  • Registratie: Mei 2002
  • Laatst online: 14-11-2025

JayVee

shibby++!

Topicstarter
Yes! Ik heb het:
JavaScript:
1
2
3
4
5
6
7
8
function stopsubmit ( evt ) {
  if ( evt.which == 13 ) {                  // bij enter
    var add = document.getElementById('add'); //pak de 'add' input
    add.click();                              // simuleer een click !
    return false;
  }
  return true;
}


HTML:
1
2
<input type="text" value="" onkeypress="return stopsubmit( event );" />
<input id="add" type="image" src="pix/icon_add.gif" />

ASCII stupid question, get a stupid ANSI!


  • slm
  • Registratie: Januari 2003
  • Laatst online: 12-11-2023

slm

Beetje rare workaround. Eerst typen en dan je muis gebruiken om ergens op een button te klikken is erg onhandig (zie bv in sommige slechtgemaakte Flash forms).

Dat de browser de del functie eerst pakt is logisch. Die image-type input dingen zijn ook submit buttons. Enter = submit. Eerste submit = del --> del.

Maak van je input type=image gewoon img src=blah onclick=del of iets dergelijks en dan ben je klaar.

To study and not think is a waste. To think and not study is dangerous.


  • JayVee
  • Registratie: Mei 2002
  • Laatst online: 14-11-2025

JayVee

shibby++!

Topicstarter
add.click simuleert een click op die button. Je hoeft het niet zelf te doen of zo!
Check http://www.w3schools.com/htmldom/dom_obj_submit.asp

ASCII stupid question, get a stupid ANSI!


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:46

crisp

Devver

Pixelated

JayVee schreef op 18 juni 2004 @ 14:18:
add.click simuleert een click op die button. Je hoeft het niet zelf te doen of zo!
Check http://www.w3schools.com/htmldom/dom_obj_submit.asp
Niet elke browser ondersteund dat.
Wat ik me afvraag is of je niet allemaal losse forms kan maken, of dat je wellicht met een hidden form weg kan komen en wat javascript voor die rijen met zo'n delete kruisje.
Het lijkt me dat er vast wel mooie alternatieven zijn te vinden zonder dat je met javascript de enterkey hoeft af te vangen, maar daarvoor moeten we wel precies weten wat je wil bereiken.

Intentionally left blank

Pagina: 1