Toon posts:

[JS] Bij enter toets GEEN submit

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo mensen,

Ik heb een form, met daarin meerdere knoppen & invulvakken, nu mag hij in het ene vak wel submitten bij een enter toets, en bij het andere niet.
Ik wil dus gewoon alles laten submitten bij enter, en op de enkele boxxen waar t niet mag een stuk javascript aanhangen.
Dit had ik in gedachten, achter het invulveld een onkeypress attribuut met de volgende functie:
code:
1
2
3
4
5
6
7
8
function escapeSubmit(e) {
isNetscape=(document.layers);
eventChooser = (isNetscape) ? keyStroke.which : e.keyCode;
if (eventChooser == 13)
{
return false;
}
}


De if komt hij alleen door als er ook daadwerkelijk op enter gedrukt is, dit heb ik getest dmv een alert box. Maar hoe zorg ik nu dan dat het form niet gesubmit word, en er gewoon niks gebeurd? Ik dacht false returnen maar dat werkt blijkbaar niet.

  • djexplo
  • Registratie: Oktober 2000
  • Laatst online: 21-12-2025
Ik zou het zelf net iets anders aanpakken, gebruik een normale knop inplaats van een submit-type. Op het moment dat er op de knop wordt gedrukt, bepaal je aan de hand van welke knop dat is en of er op enter is gedrukt via keyStroke of je de submit ook werkelijk uit voert. In javascript is dit niet zo heel moeilijk ...

'if it looks like a duck, walks like a duck and quacks like a duck it's probably a duck'


Verwijderd

Topicstarter
Maar ik heb dus meerdere knoppen, die allemaal een andere actie uitvoert (wat ik aan de php kant dus bepaal). Om dan voor elke knop een stuk in mijn javascript te moeten toevoegen lijkt mij geen mooie oplossing ivm dat de site makkelijk qua design aan te passen moet zijn (XSL)

  • Gonadan
  • Registratie: Februari 2004
  • Nu online

Gonadan

Admin Beeld & Geluid, Harde Waren
Verwijderd schreef op woensdag 12 april 2006 @ 14:05:
Maar ik heb dus meerdere knoppen, die allemaal een andere actie uitvoert (wat ik aan de php kant dus bepaal). Om dan voor elke knop een stuk in mijn javascript te moeten toevoegen lijkt mij geen mooie oplossing ivm dat de site makkelijk qua design aan te passen moet zijn (XSL)
Dan zet je toch lekker een
code:
1
2
3
while (true) {
//doe niks
}

in je functie?
Blijft hij lekker niks doen als je op enter tikt. ;)

Wel hardstikke vies natuurlijk :P :9

Look for the signal in your life, not the noise.

Canon R6 | RF 24-70 f/2.8 L | 50 f/1.8 STM | 430EX II
Sigma 85 f/1.4 Art | 100-400 Contemporary
Zeiss Distagon 21 f/2.8


Verwijderd

Topicstarter
Gonadan schreef op woensdag 12 april 2006 @ 14:08:
[...]

Dan zet je toch lekker een
code:
1
2
3
while (true) {
//doe niks
}

in je functie?
Blijft hij lekker niks doen als je op enter tikt. ;)

Wel hardstikke vies natuurlijk :P :9
offtopic:
Die oplossing is het tegenovergestelde van jou onderschrift :p

  • djexplo
  • Registratie: Oktober 2000
  • Laatst online: 21-12-2025
Verwijderd schreef op woensdag 12 april 2006 @ 14:05:
Maar ik heb dus meerdere knoppen, die allemaal een andere actie uitvoert (wat ik aan de php kant dus bepaal). Om dan voor elke knop een stuk in mijn javascript te moeten toevoegen lijkt mij geen mooie oplossing ivm dat de site makkelijk qua design aan te passen moet zijn (XSL)
Dat hoeft toch helemaal niet v.b:
<input type="button" value="Opsturen" onclick="submitpress(0, 'form1');" >

Je maakt gewoon één functie/javascriptje en daar geef je aan mee hoe het form heet, en of de submit wel of niet op enter moet werken.

Na het ontvangen van de enter keystroke, zet je de variable enter op true en start je een timer van 2 seconden die hem na de 2 seconden weer op false zet.
In je submitpress functie wacht je 500ms voor je de functie verder uit voert en gebruik je een if/switch op de enter variable.

[ Voor 42% gewijzigd door djexplo op 12-04-2006 14:15 ]

'if it looks like a duck, walks like a duck and quacks like a duck it's probably a duck'


  • Gonadan
  • Registratie: Februari 2004
  • Nu online

Gonadan

Admin Beeld & Geluid, Harde Waren
Verwijderd schreef op woensdag 12 april 2006 @ 14:11:
[...]

offtopic:
Die oplossing is het tegenovergestelde van jou onderschrift :p
offtopic:
mwoch, ik heb er wel degelijk over nagedacht :P
het slaat alleen nergens op ;)
maar waarom zou het niet werken? :P

Look for the signal in your life, not the noise.

Canon R6 | RF 24-70 f/2.8 L | 50 f/1.8 STM | 430EX II
Sigma 85 f/1.4 Art | 100-400 Contemporary
Zeiss Distagon 21 f/2.8


Verwijderd

Topicstarter
Ja maar hoe zorg je dat er dan NIET gesubmit word bij enter, standaard doet hij dit dus wel!
En ik wil niet met timers e.d. werken aangezien snelheid voor de gebruiker essentieel is (dr werd zelfs gezeurd over een query die 0,5 sec te lang erover deed :p)

[ Voor 48% gewijzigd door Verwijderd op 12-04-2006 14:17 ]


  • André
  • Registratie: Maart 2002
  • Laatst online: 23-02 17:02

André

Analytics dude

Gonadan schreef op woensdag 12 april 2006 @ 14:14:
[...]

maar waarom zou het niet werken? :P [/offtopic]
Omdat je de browser in een continu proces gooit waardoor hij heel zwaar loopt en zelfs misschien helemaal niet meer functioneert.

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 23-02 19:58

mulder

ik spuug op het trottoir

Verwijderd schreef op woensdag 12 april 2006 @ 14:16:
Ja maar hoe zorg je dat er dan NIET gesubmit word bij enter, standaard doet hij dit dus wel!
return false; :)

oogjes open, snaveltjes dicht


  • Gonadan
  • Registratie: Februari 2004
  • Nu online

Gonadan

Admin Beeld & Geluid, Harde Waren
Fijn dat jij de TS goed leest ;)

Look for the signal in your life, not the noise.

Canon R6 | RF 24-70 f/2.8 L | 50 f/1.8 STM | 430EX II
Sigma 85 f/1.4 Art | 100-400 Contemporary
Zeiss Distagon 21 f/2.8


Verwijderd

Topicstarter
André schreef op woensdag 12 april 2006 @ 14:16:
[...]

Omdat je de browser in een continu proces gooit waardoor hij heel zwaar loopt en zelfs misschien helemaal niet meer functioneert.
Firefox vind dat idd niet leuk, ik had net een onblur, die een focus + alertbox aanroept, hier kom je dus nooit meer uit en is ongeveer hetzelfde als die nooit eindigende while :)

Verwijderd

Topicstarter
Ben een stap dichterbij de oplossing, als ik mijn code uit de functie haal, en los in het onkeypress geval gooi werkt het WEL!

  • Gonadan
  • Registratie: Februari 2004
  • Nu online

Gonadan

Admin Beeld & Geluid, Harde Waren
Verwijderd schreef op woensdag 12 april 2006 @ 14:17:
[...]


Firefox vind dat idd niet leuk, ik had net een onblur, die een focus + alertbox aanroept, hier kom je dus nooit meer uit en is ongeveer hetzelfde als die nooit eindigende while :)
Ik weet dat het zwaar voor hem is maar hij submit niet ;)

Ik denk dat je er toch aan moet om wat javascript methodes te maken zoals hierboven al gesuggereerd.
Weet je zeker dat die return de functie stopt? En niet alleen de loop?
Misschien zwets ik hoor, maar ik meen mij te herinneren dat daar problemen mee kunnen zijn :)

Look for the signal in your life, not the noise.

Canon R6 | RF 24-70 f/2.8 L | 50 f/1.8 STM | 430EX II
Sigma 85 f/1.4 Art | 100-400 Contemporary
Zeiss Distagon 21 f/2.8


  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 23-02 19:58

mulder

ik spuug op het trottoir

Gonadan schreef op woensdag 12 april 2006 @ 14:17:
[...]

Fijn dat jij de TS goed leest ;)
Fijn is toch dat het wel zou moeten werken.

oogjes open, snaveltjes dicht


Verwijderd

Topicstarter
Case closed!
Ik roep mijn functie aan meer doe ik niet, maar ik moet het resultaat van mijn functie returnen! Dus in de functie doe ik nu als er op enter gedrukt is return false, en waar ik de functie aanroep (de onkeypress) doe ik return functie;

eigenlijk best logisch

  • Gonadan
  • Registratie: Februari 2004
  • Nu online

Gonadan

Admin Beeld & Geluid, Harde Waren
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<form
    action="bla"
    onsubmit="return validate(this);">
...
</form>

...

 function validate(f) {
  if(keytest) {
   return false;
  }
  ...
 }

zoiets vond ik met google :)
Don Facundo schreef op woensdag 12 april 2006 @ 14:23:
[...]


Fijn is toch dat het wel zou moeten werken.
Volgens mij ging het mis in het formulier :)

[ Voor 41% gewijzigd door Gonadan op 12-04-2006 14:26 ]

Look for the signal in your life, not the noise.

Canon R6 | RF 24-70 f/2.8 L | 50 f/1.8 STM | 430EX II
Sigma 85 f/1.4 Art | 100-400 Contemporary
Zeiss Distagon 21 f/2.8


  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Voor zover ik weet, kan je het posten van een form, middels JS alleen stoppen via het onsubmit attribuut van de form-tag
HTML:
1
<form method="post" action="een_file.ext" onsubmit="return je_functie()">
Had dit namelijk een tijdje terug ergens gelezen (weet even niet meer waar) toen ik zelf een form validatie JS'je had gemaakt... :)

  • Gonadan
  • Registratie: Februari 2004
  • Nu online

Gonadan

Admin Beeld & Geluid, Harde Waren
Mooie link:
http://www.irt.org/script/1693.htm
combineer dat met de onsubmit dinges en dan moet het lukken :)

[ Voor 3% gewijzigd door Gonadan op 12-04-2006 14:29 ]

Look for the signal in your life, not the noise.

Canon R6 | RF 24-70 f/2.8 L | 50 f/1.8 STM | 430EX II
Sigma 85 f/1.4 Art | 100-400 Contemporary
Zeiss Distagon 21 f/2.8


Verwijderd

Topicstarter
Hallo tis al opgelost :p
eerst deed ik:
(vergeet ff de xsl tags)
code:
1
2
3
<xsl:attribute name="onkeypress">
<xsl:text>escapeSubmit(event);</xsl:text>
</xsl:attribute>


En nu:
code:
1
2
3
<xsl:attribute name="onkeypress">
<xsl:text>return escapeSubmit(event);</xsl:text>
</xsl:attribute>


hierdoor gaat t dus goed ;)

  • Gonadan
  • Registratie: Februari 2004
  • Nu online

Gonadan

Admin Beeld & Geluid, Harde Waren
Verwijderd schreef op woensdag 12 april 2006 @ 14:30:
Hallo tis al opgelost :p
eerst deed ik:
(vergeet ff de xsl tags)
code:
1
2
3
<xsl:attribute name="onkeypress">
<xsl:text>escapeSubmit(event);</xsl:text>
</xsl:attribute>


En nu:
code:
1
2
3
<xsl:attribute name="onkeypress">
<xsl:text>return escapeSubmit(event);</xsl:text>
</xsl:attribute>


hierdoor gaat t dus goed ;)
LOL dus inderdaad de return vergeten :)

Look for the signal in your life, not the noise.

Canon R6 | RF 24-70 f/2.8 L | 50 f/1.8 STM | 430EX II
Sigma 85 f/1.4 Art | 100-400 Contemporary
Zeiss Distagon 21 f/2.8


  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 23-02 19:58

mulder

ik spuug op het trottoir

Verwijderd schreef op woensdag 12 april 2006 @ 14:23:
Case closed!
Ik roep mijn functie aan meer doe ik niet, maar ik moet het resultaat van mijn functie returnen! Dus in de functie doe ik nu als er op enter gedrukt is return false, en waar ik de functie aanroep (de onkeypress) doe ik return functie;

eigenlijk best logisch
Begrijp dan ook dat je dus moet zorgen dat de 'onsubmit' false moet returnen? Nu is het de 13 key die er voor zorgt dat je niet kan submitten, dit zou even goed een validatie kunnen zijn. (bv name != '')

[ Voor 3% gewijzigd door mulder op 12-04-2006 14:41 ]

oogjes open, snaveltjes dicht

Pagina: 1