Avatar billede Kast20 Seniormester
26. marts 2015 - 16:08 Der er 6 kommentarer og
1 løsning

Append onsubmit til <form> tag

Hej,

Hvordan kan jeg med et jquery script, føje følgende til <form> tagget når siden loades:

onsubmit='....'

Formen kan identificeres med:

<form class="form1" method="post" action="http://...">

</form>

Jeg loader mit jquery script fra en ekstern fil.
Avatar billede Kast20 Seniormester
26. marts 2015 - 16:10 #1
Har forsøgt med følgende men ser ikke ud til at virke:

jQuery('.form1 form').append("onsubmit='xxxxx'");
Avatar billede Kast20 Seniormester
26. marts 2015 - 17:23 #2
Og mit andet spørgsmål:

Hvordan kan jeg udvide nedenstående script, så når der klikkes på submit-knappen (.button) udfører den først en handling, hvorefter formularen afsendes efter 3 sekunder.

jQuery(document).ready(function($) {
    $(".form1.button").click(function(e) {
    ...udfør handling
    });
});

Lige nu er det ikke garanteret, at handlingen når at blive udført før formularen sendes.
Avatar billede softspot Forsker
26. marts 2015 - 17:35 #3
Kobl funktion på submit:

$("form.form1").submit(...);


og udfør handling efter 3 sekunder:

$(function() {
    $(".form1.button").click(function(e) {
      setTimeout(function() { /* ...udfør handling */
      }, 3000);
    });
});
Avatar billede softspot Forsker
26. marts 2015 - 17:39 #4
Der kom jeg vist for hurtigt ud af starthullerne. Du ville jo udføre en handling først og så sende formularen efter 3 sekunder:

Det vil jeg mene man kan løse sådan her:

$(function() {
    $(".form1.button").click(function(e) {
      /* ...udfør handling */
      var frm = this.form;
      setTimeout(function() { frm.submit(); }, 3000);
    });
});
Avatar billede Kast20 Seniormester
26. marts 2015 - 18:14 #5
Hej,

Tak for svar. :-)

Vil det være en fordel at benytte "preventDefault" i scriptet, har hørt det er en god idé? I stil med nedenstående:

jQuery(document).ready(function($) {
    $(".form1 .button").click(function(e) {
    var jsForm = this.form;
            e.preventDefault();
        /* ...udfør handling */
    setTimeout(function() {
    jsForm.submit();
    },3000);
    });
});
Avatar billede softspot Forsker
26. marts 2015 - 20:08 #6
Velbekomme :-)

Hvis din knap ikke er en submit-knap, er det vist ikke nødvendigt, men ellers er det nok en god idé at sætte preventDefault ind, som du har vist... :-)

Du kan evt. krydre det med en return false i slutningen af event-funktionen.
Avatar billede Kast20 Seniormester
27. marts 2015 - 00:02 #7
Ah - ja det er faktisk en submit knap. En ting jeg også bemærkede er, at den kører min handling, også selvom formularen ikke bliver afsendt (f.eks. fordi validering af e-mail feltet fejler).

Det kan måske løses, men så er det noget andet end ".click" der skal lyttes på?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester