Toon posts:

[Javascript] onkeyup ombouwen naar submit

Pagina: 1
Acties:
  • 482 views

Verwijderd

Topicstarter
Omdat ik er achter ben gekomen dat een submit zonder submitbutton, dus een automatische submit, niet erg handig is bij DB queries (dit idee has ik overigens al) wil ik het volgende formulier ombouwen naar een normale submit variant.

Zie: [AJAX] Formsubmit met delay voor mijn oude topic.

Het gaat om deze code:

code:
1
2
3
<form action="javascript:get(document.getElementById('myform'));" name="myform" id="myform">
                    <input name="fieldname" type="text" onkeyup="javascript:get(this.parentNode);">
        </form>



De vraag is natuurlijk of dit haalbaar zal zijn of dat ik een hele rewrite van de code moet gaan doen.

Ik ben al bezig geweest met onclick en onsubmit, dit werkt alleen niet, en ik denk omdat ik in dit geval ook afhankelijk ben van andere javascript welke samen werkt met de onkeyup functie.

Kan iemand mij hier in raden ?

  • Juup
  • Registratie: Februari 2000
  • Niet online
Tsja ik zal toch maar even reageren zodat je weet waarom je m.i. zo weinig replies krijgt:
  • Je probleem is erg vaag
  • Wij weten niets over de "andere javascript welke samen werkt met de onkeyup functie"
  • Je verwijst naar een andere post die we blijkbaar ook maar even moeten lezen om genoeg context te hebben
  • Je sluit je post niet af met een concrete vraag maar met een hele algemene (geef eens wat advies).
  • Samengevat: stel eens een concrete vraag met beknopte relevante context.

Een wappie is iemand die gevallen is voor de (jarenlange) Russische desinformatiecampagnes.
Wantrouwen en confirmation bias doen de rest.


  • Borizz
  • Registratie: Maart 2005
  • Laatst online: 24-09 20:59
Verwijderd schreef op vrijdag 06 juni 2008 @ 12:17:
Omdat ik er achter ben gekomen dat een submit zonder submitbutton, dus een automatische submit, niet erg handig is bij DB queries (dit idee has ik overigens al) wil ik het volgende formulier ombouwen naar een normale submit variant.
Moeten wij zo weten waar dit over gaat? Er is geen touw aan vast te knopen ik ben het volledig met jaaap eens.

Verder geef je ook niet aan wat je nu zelf al wel of niet gedaan hebt of wat nu je probleem is dat je wilt verhelpen. Het stukje code dat je post is volgens mij ook niet echt relevant. Maak eens een duidelijke testcase en geef aan wat er niet goed gaat en wat je zelf hebt geprobeerd om het op te lossen.

If I can't fix it, it ain't broken.


Verwijderd

code:
1
2
3
4
<form action="javascript:get(document.getElementById('myform'));" id="myform">
   <input name="fieldname" type="text">
   <input type="submit" value="Opslaan!">
</form>

Verwijderd

Topicstarter
Verwijderd schreef op zaterdag 07 juni 2008 @ 21:37:
code:
1
2
3
4
<form action="javascript:get(document.getElementById('myform'));" id="myform">
   <input name="fieldname" type="text">
   <input type="submit" value="Opslaan!">
</form>
Dank je, dit heb ik ook geprobeerd.

Ik krijg alleen een Javascript error dat get niet gedefinieerd is, wat opzich wel logisch kan zijn omdat het script wat de data eigenlijk ophaalt na het typen het niet meer snapt:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<script type="text/javascript" language="javascript">
   var http_request = false;
   function makeRequest(url, parameters) {
      http_request = false;
      if (window.XMLHttpRequest) { // Mozilla, Safari,...
         http_request = new XMLHttpRequest();
         if (http_request.overrideMimeType) {
            // set type accordingly to anticipated content type
            //http_request.overrideMimeType('text/xml');
            http_request.overrideMimeType('text/html');
         }
      } else if (window.ActiveXObject) { // IE
         try {
            http_request = new ActiveXObject("Msxml2.XMLHTTP");
         } catch (e) {
            try {
               http_request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
         }
      }
      if (!http_request) {
         alert('Cannot create XMLHTTP instance');
         return false;
      }
      http_request.onreadystatechange = alertContents;
      http_request.open('GET', url + parameters, true);
      http_request.send(null);
   }

   function alertContents() {
      if (http_request.readyState == 4) {
         if (http_request.status == 200) {
            //alert(http_request.responseText);
            result = http_request.responseText;
            document.getElementById('myspan').innerHTML = result;            
         } else {
            alert('There was a problem with the request.');
         }
      }
   }
   
   function get(obj) {
      var getstr = "?";
      for (i=0; i<obj.childNodes.length; i++) {
         if (obj.childNodes[i].tagName == "INPUT") {
            if (obj.childNodes[i].type == "text") {
               getstr += obj.childNodes[i].name + "=" + obj.childNodes[i].value + "&";
            }
            if (obj.childNodes[i].type == "checkbox") {
               if (obj.childNodes[i].checked) {
                  getstr += obj.childNodes[i].name + "=" + obj.childNodes[i].value + "&";
               } else {
                  getstr += obj.childNodes[i].name + "=&";
               }
            }
            if (obj.childNodes[i].type == "radio") {
               if (obj.childNodes[i].checked) {
                  getstr += obj.childNodes[i].name + "=" + obj.childNodes[i].value + "&";
               }
            }
         }   
         if (obj.childNodes[i].tagName == "SELECT") {
            var sel = obj.childNodes[i];
            getstr += sel.name + "=" + sel.options[sel.selectedIndex].value + "&";
         }
         
      }
      makeRequest('get.php', getstr);
   }
</script>

  • Juup
  • Registratie: Februari 2000
  • Niet online
Je moet ook vooral niet reageren op Borizz en mijn post hoor, of iets er uit ter harte nemen. :(

Een wappie is iemand die gevallen is voor de (jarenlange) Russische desinformatiecampagnes.
Wantrouwen en confirmation bias doen de rest.


Verwijderd

Topicstarter
Juup schreef op zondag 08 juni 2008 @ 00:00:
Je moet ook vooral niet reageren op Borizz en mijn post hoor, of iets er uit ter harte nemen. :(
Ben ik dat verplicht dan ?

Ik was van mening dat ik niet mijn topic hoefde te herhalen, dit zou als crosspost gezien kunnen worden.

Als je interesse hebt in hebt in het topic dan had je ook even door kunnen klikken naar de links.

Je kwam nogal vervelend op me over, als een mod dit nu had gezegd had ik "ja" gezegd, maar blijkbaar heb ik prima verwezen en geen crosspost/topic heb gemaakt.

[ Voor 0% gewijzigd door Verwijderd op 08-06-2008 01:03 . Reden: typo ]


Verwijderd

Als ik jouw code zo bekijk, zou ik zeggen schrap dat hele AJAX uit je pagina. AJAX is leuk, maar in zeer weinig gevallen draagt het ook werkelijk bij aan de usability. Zeker in jouw voorbeeld zie ik AJAX meer als last dan als must.

(en dan doel ik met name op de javascript in de form-action; behoorlijk ranzig wel O-) )

[ Voor 16% gewijzigd door Verwijderd op 08-06-2008 02:14 ]


  • Patriot
  • Registratie: December 2004
  • Laatst online: 20:16

Patriot

Fulltime #whatpulsert

Gebruik dit:

HTML:
1
2
3
<form action="" onsubmit="get(document.getElementById('myform')); return false;" name="myform" id="myform">
  <input name="fieldname" type="text" onkeyup="get(this.parentNode);">
</form>


De fout die je maakte was er van uitgaan dat je de javascript zomaar in de action kon zetten, terwijl dat niet kan. Onsubmit is wat je nodig hebt.

[ Voor 7% gewijzigd door Patriot op 08-06-2008 02:25 ]


  • krvabo
  • Registratie: Januari 2003
  • Laatst online: 12-11 22:03

krvabo

MATERIALISE!

Verwijderd schreef op zondag 08 juni 2008 @ 00:38:
[...]


Ben ik dat verplicht dan ?

Ik was van mening dat ik niet mijn topic hoefde te herhalen, dit zou als crosspost gezien kunnen worden.
Als je interesse hebt in hebt in het topic dan had je ook even door kunnen klikken naar de links.
Eerder gezegd kom jij hier vervelender over dan de user die eerder een opmerking maakte ;)
Maargoed. Zoals TheProspector al zegt: het is meer een last. Blijkbaar heb je dit script ook niet zelf geschreven ;)

In ieder geval zou zoiets moeten werken:
.. (zie beneden)
De get.php in de action is namelijk om het ook te laten werken zonder javascript. Als het goed is worden namelijk met GET de variabelen in de querystring gezet.
Wat hij nu doet is onsubmit (enter of submitbutton) de functie aanroepen en dan zorgen dat het formulier niet gesubmit wordt. Als je javascript uitstaat kent ie de return false dus ook niet.

De code hierboven iets beter:
HTML:
1
2
3
4
<form action="get.php" method="get" onsubmit="get(document.getElementById('myform')); return false;" id="myform">
   <input name="fieldname" type="text" onkeyup="get(document.getElementById('myform'));">
   <input type="submit" value="Opslaan!">
</form>

[ Voor 25% gewijzigd door krvabo op 08-06-2008 02:30 ]

Pong is probably the best designed shooter in the world.
It's the only one that is made so that if you camp, you die.


Verwijderd

Topicstarter
Na er even rustig voor te zijn gaan zitten blijkt het script aangepast te zijn zodat gebruikers hiervan POST en GET kunnen gebruiken.

Ideaal mensen die cross-use scripts bouwen !

Dank voor de hulp !

  • XangadiX
  • Registratie: Oktober 2000
  • Laatst online: 26-05 15:01

XangadiX

trepanatie is zóó kinderachtig

hmm, tja, mja, de TS is inderdaad wat vaag, maar het probleem is opgelost dus ik sluit het Topic.

Eerlijk gezegd weet ik nu niet of ik hier mensen moet gaan spanken omdat ze een draadje aan het kapen zijn, of omdat de TS wat aan de vage kant is. Jullie zouden wat mij betreft allemaal beter moeten weten. O-)

Stoer; Marduq

Pagina: 1

Dit topic is gesloten.