Toon posts:

[AJAX] Formsubmit met delay

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben bezig een formsubmit met Ajax in elkaar te zetten.

Dit doe ik met :

http://www.captain.at/howto-ajax-form-post-request.php

Gebruikmaken van:

code:
1
function focus(){ document.myform.inputname.focus(); }


Nu wordt dit formulier direct gesubmit zodra ik iets typ, ik zou hier graag een delay van 1-2 seconde, dus +/- 2000ms in willen bouwen omdat je anders tijdens het typen eerst een foutmelding krijgt welke later weer weg gaat omdat je aan het typen was ;) Bijvoorbeeld een lengte van de input waar je tijdens het typen nog niet aan bent gekomen.

Dit lijkt me mogelijk, de vraag is allen hoe. Ik heb al met een SetTimeout geprobeerd hier wat delay in te brengen, dit werkte echt niet (geheel).

Aan de andere kant is het wellicht onoverzichtelijk om deze delay er in te brengen en zou ik er 2 verschillende processing balkjes in moeten bouwen:

1 => de query wordt uitgevoer, welke eigenlijk de delay is
2 => leeg laten en de query/script uit laten voeren en dan gewoon output geven.

Heeft iemand een idee om dit wat minder adhock te laten reageren ?

  • dominic
  • Registratie: Juli 2000
  • Laatst online: 02-11 11:36

dominic

will code for food

Het is ook .setTimeout en geen .SetTimeout.. Is echt de beste oplossing; na iedere keydown een timeout resetten die uiteindelijk een submit doet.

Download my music on SoundCloud


  • CRiMiNaL
  • Registratie: Mei 2002
  • Laatst online: 10-01-2024

CRiMiNaL

Witlof ^^

kan je niet gewoon beter op het onblur event pas je ajax request uitvoeren ?

... MMORPG Addict.


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
CRiMiNaL schreef op dinsdag 03 juni 2008 @ 14:46:
kan je niet gewoon beter op het onblur event pas je ajax request uitvoeren ?
Beetje lastig autocompleten dan ;) (Althans, ik neem aan dat dat de bedoeling is)

[ Voor 9% gewijzigd door RobIII op 03-06-2008 14:58 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • CRiMiNaL
  • Registratie: Mei 2002
  • Laatst online: 10-01-2024

CRiMiNaL

Witlof ^^

RobIII schreef op dinsdag 03 juni 2008 @ 14:56:
[...]

Beetje lastig autocompleten dan ;)
Autocompleten leek mij ook niet het doel van de ts als hij 2 seconden delay in gaat bouwen ;)

TS, misschien moet je even duidelijk aangeven wat je wilt bereiken met je AJAX request, zoals het op mij overkomt gaat het om validation, maar er zijn meerdere interpretaties mogelijk

[ Voor 28% gewijzigd door CRiMiNaL op 03-06-2008 15:06 ]

... MMORPG Addict.


Verwijderd

Topicstarter
dominic schreef op dinsdag 03 juni 2008 @ 14:43:
Het is ook .setTimeout en geen .SetTimeout.. Is echt de beste oplossing; na iedere keydown een timeout resetten die uiteindelijk een submit doet.
Ja klopt, mijn typfout.

Echter, wordt dat wellicht een beetje onoverzichtelijk.

Zo een "procesbar" voor tijdens het typen ook niet handig zijn om te laten zien dat er toch wat gebeurt ?

edit:

Dit:

code:
1
function focus() { setTimeout( function () { document.myform.inputname.focus(); }, 2000); }


Geeft mij nog steeds geen timeout, script gata meteen runnen.

@CRiMiNaL: De naam welke in het input field wordt ingevuld wordt in een query gebruikt. Deze query check eerst of er voldoende karakters zijn ingevoerd en gaat daarna pas verder.

Het probleem is dat als ik bijvoorbeel 4 karakters vraag, het script direct bij het typen al gata zeggen, je hebt geen 4 karakters ingevuld als je op 3 bent.

Dus mijn inziens runt het script na iedere "tiep".

[ Voor 40% gewijzigd door Verwijderd op 03-06-2008 15:21 ]


  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

Dat zou pas innovatief zijn: Een progressbar (en ETA) ter verduidelijking wanneer je tekst voltooid is.

U heeft momenteel 62% van uw reactie geschreven :+

If it isn't broken, fix it until it is..


Verwijderd

Topicstarter
Niemand_Anders schreef op dinsdag 03 juni 2008 @ 15:20:
Dat zou pas innovatief zijn: Een progressbar (en ETA) ter verduidelijking wanneer je tekst voltooid is.

U heeft momenteel 62% van uw reactie geschreven :+
Je kunt toch aan de hand van de delay die bar laten zien ?

Als er heen input meer is valt die bar weg en runt je script.

  • CRiMiNaL
  • Registratie: Mei 2002
  • Laatst online: 10-01-2024

CRiMiNaL

Witlof ^^

code:
1
2
3
4
5
6
7
8
9
function focus() {
setTimeout('validateInput(document.myform.inputname.value)',1250);
}

function validateInput(input) {
if(input.length() > 4) {
     //execute ajax request
}
}

Zou moeten werken en haalt de 4 char check naar de JS kant en dat scheelt je weer een zooi request tot het moment dat de user meer dan 4 chars heeft getyped

... MMORPG Addict.


Verwijderd

Topicstarter
AH top, dank je !

Echter doe ik die check in het ajax/php/whatever gebeuren, dus:

Of de output wordt geecho-ed of een error:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function check_valid_input($input) {

//Check input length > 2 || < 63 characters
    if (strlen($input) < 3){
        return 1;
//Check input can not start with -
    } elseif (ereg("^-|-$", $input)){
       return 2;
//Letters , numbers and - _ only
    } elseif (!ereg("([a-z]|[A-Z]|[0-9]|-){".strlen($input)."}", $input)){
        return 3;
    }
  return 0;
}


Dus ik zit een beetje in dubio of ik het gehele script zal gaan verbouwen of jowu manier zal toepassen, welke denk ik wel slim is.

  • CRiMiNaL
  • Registratie: Mei 2002
  • Laatst online: 10-01-2024

CRiMiNaL

Witlof ^^

Dat moet je helemaal zelf weten, het heeft beide z'n voordelen, tip die ik nog wil geven is gooi een mysql_real_escape_string over de input voor dat je er iets mee doet gaat doen in je db.

... MMORPG Addict.


Verwijderd

Topicstarter
CRiMiNaL schreef op dinsdag 03 juni 2008 @ 16:14:
Dat moet je helemaal zelf weten, het heeft beide z'n voordelen, tip die ik nog wil geven is gooi een mysql_real_escape_string over de input voor dat je er iets mee doet gaat doen in je db.
Altijd een goede tip inderdaad !

Kun jij een idee geven waarom mijn timeout niet werkt, of zou deze wel moeten werken ?

  • CRiMiNaL
  • Registratie: Mei 2002
  • Laatst online: 10-01-2024

CRiMiNaL

Witlof ^^

Als jij mij laat zien hoe jij de timeout aanroept, dan kan ik dan wel zeggen ja, als het nog steeds hetzelfde is als in je startpost, dan doe je daar niks anders dan een functie declareren zodra er 2 seconden om zijn, de rest van je script gaat dus gewoon door.

Voor de duidelijkheid kun je misschien een stukje relevante code posten.

... MMORPG Addict.

Pagina: 1