---
title: "Posta formulär och kalla på funktion"
type: "forum-thread"
url: "https://www.webforum.nu/amne/javascript/176707-posta-formulär-och-kalla-på-funktion"
topic: "JavaScript"
topic_url: "https://www.webforum.nu/amne/javascript"
author: "MickeA.com"
published: "2009-02-04T13:02:08.000Z"
updated: "2009-02-11T20:57:44.000Z"
replies: 17
views: 735
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/javascript/176707-posta-formulär-och-kalla-på-funktion"
---

# Posta formulär och kalla på funktion

## #1 — MickeA.com, 2009-02-04T13:02Z

Hej,

Använder webToolkit.AIM för att posta formulär med AJAX.
Koden ser ut såhär:

```
<form id="test" action="ajax.postmyform.php" method="post" onsubmit="return AIM.submit(this, {'onStart' : initPasteContent, 'onComplete' : cbPasteContent});">

</form>
```

I normala fall postar man formuläret med:

```
<input type="submit" value="submit" />
```

Men nu vill jag kunna posta det via en länk eller knapp som ligger utanför formuläret.
Jag försökt med bl.a. dessa:

```
document.forms[0].submit();
document.forms[0].submit();
```

Formuläret postas, men postas då "som vanligt", det som ligger i "onsubmit" sker inte, utan datan postas till en ny sida.

Finns det något sätt att "komma runt" det här?

Permalänk: https://www.webforum.nu/p/176707

## #2 — Peter S, 2009-02-04T13:25Z

```
if (document.forms[0].onsubmit){
  document.forms[0].onsubmit();
}
```

Permalänk: https://www.webforum.nu/p/2167703

## #3 — MickeA.com, 2009-02-04T13:33Z

Tack ska du ha!

Permalänk: https://www.webforum.nu/p/2167705

## #4 — MickeA.com, 2009-02-10T14:08Z

> **[Peter S skrev:](https://www.webforum.nu/p/1454987)**
>
> ```
> if (document.forms[0].onsubmit){
>   document.forms[0].onsubmit();
> }
> ```

Kör det här på en \<select\> som ligger i mitt formulär:

```
ondblclick="if(this.form.onsubmit){ this.form.attempt.value = 'Apply'; this.form.onsubmit(); }else{ alert('error'); }"
```

Den första funktionen med prefixet "init" körs, men någon response får jag aldrig.
Har jag missat något?

Permalänk: https://www.webforum.nu/p/2168348

## #5 — Peter S, 2009-02-11T10:05Z

Oj, ingen aning. Lägg in en alert() i init- och cb-funktionerna för att se så att de verkligen körs.

Permalänk: https://www.webforum.nu/p/2168524

## #6 — MickeA.com, 2009-02-11T10:45Z

> **[Peter S skrev:](https://www.webforum.nu/p/1455965)**
>
> Oj, ingen aning. Lägg in en alert() i init- och cb-funktionerna för att se så att de verkligen körs.

Har redan provat det och init körs, men inte cb.

Permalänk: https://www.webforum.nu/p/2168530

## #7 — Peter S, 2009-02-11T12:08Z

Vad får du med

```
ondblclick="this.form.attempt.value = 'Apply'; AIM.submit(this.form, {'onStart' : initPasteContent, 'onComplete' : cbPasteContent})"
```

?

Permalänk: https://www.webforum.nu/p/2168541

## #8 — MickeA.com, 2009-02-11T17:08Z

> **[Peter S skrev:](https://www.webforum.nu/p/1455984)**
>
> Vad får du med
>
>
> ```
> ondblclick="this.form.attempt.value = 'Apply'; AIM.submit(this.form, {'onStart' : initPasteContent, 'onComplete' : cbPasteContent})"
> ```
>
> ?

Samma sak som tidigare, "init" körs, men inte "callback".

Undra hur man ska lösa det här...

Permalänk: https://www.webforum.nu/p/2168593

## #9 — Peter S, 2009-02-11T17:09Z

Om du testar att ha det i \<form\>:s onsubmit igen -- blir det fel även då?

Permalänk: https://www.webforum.nu/p/2168594

## #10 — MickeA.com, 2009-02-11T17:37Z

Nej, det funkar, sålänge jag kör "this" istället för "this.form".
Såhär ser AIM Toolkit ut:

```
/**
*
*  AJAX IFRAME METHOD (AIM)
*  [url]http://www.webtoolkit.info/[/url]
*
**/

AIM = {

	frame : function(c) {

		var n = 'f' + Math.floor(Math.random() * 99999);
		var d = document.createElement('DIV');
		d.innerHTML = '<iframe style="display: none;" src="about:blank" id="'+n+'" name="'+n+'" onload="AIM.loaded(\''+n+'\')"></iframe>';
		d.style.css="border: 1px #000 solid;";
		document.body.appendChild(d);

		var i = document.getElementById(n);
		if (c && typeof(c.onComplete) == 'function') {
			i.onComplete = c.onComplete;
		}

		return n;
	},

	form : function(f, name) {
		f.setAttribute('target', name);
	},

	submit : function(f, c) {
		AIM.form(f, AIM.frame(c));
		if (c && typeof(c.onStart) == 'function') {
			return c.onStart();
		} else {
			return true;
		}
	},

	loaded : function(id) {
		var i = document.getElementById(id);
		if (i.contentDocument) {
			var d = i.contentDocument;
		} else if (i.contentWindow) {
			var d = i.contentWindow.document;
		} else {
			var d = window.frames[id].document;
		}
		if (d.location.href == "about:blank") {
			return;
		}

		if (typeof(i.onComplete) == 'function') {
			i.onComplete(d.body.innerHTML);
		}
	}
}
```

Något man kan ändra för att saker och ting ska triggas rätt?

Permalänk: https://www.webforum.nu/p/2168598

## #11 — Peter S, 2009-02-11T18:09Z

Det verkar som att formuläret måste postas för att onComplete skall fungera. Se följande exempel:

```
<script type="text/javascript">
/**
*
*  AJAX IFRAME METHOD (AIM)
*  [url]http://www.webtoolkit.info/[/url]
*
**/

AIM = {

	frame : function(c) {

		var n = 'f' + Math.floor(Math.random() * 99999);
		var d = document.createElement('DIV');
		d.innerHTML = '<iframe style="display: none;" src="about:blank" id="'+n+'" name="'+n+'" onload="AIM.loaded(\''+n+'\')"></iframe>';
		d.style.css="border: 1px #000 solid;";
		document.body.appendChild(d);

		var i = document.getElementById(n);
		if (c && typeof(c.onComplete) == 'function'){
			i.onComplete = c.onComplete;
		}

		return n;
	},

	form : function(f, name) {
		f.setAttribute('target', name);
	},

	submit : function(f, c) {
		AIM.form(f, AIM.frame(c));
		if (c && typeof(c.onStart) == 'function') {
			return c.onStart();
		} else {
			return true;
		}
	},

	loaded : function(id) {
		var i = document.getElementById(id);
		if (i.contentDocument) {
			var d = i.contentDocument;
		} else if (i.contentWindow) {
			var d = i.contentWindow.document;
		} else {
			var d = window.frames[id].document;
		}
		if (d.location.href == "about:blank") {
			return;
		}
		if (typeof(i.onComplete) == 'function') {
			i.onComplete(d.body.innerHTML);
		}
	}
}

function initPasteContent(s){ document.getElementById("foo").innerHTML = "Init!"; }
function cbPasteContent(s){ document.getElementById("bar").innerHTML = "Klar!"; }
</script>

<a href="javascript:void(0)" onclick="document.forms[0].onsubmit();document.forms[0].submit()">Submit!</a>
<form onsubmit="AIM.submit(this, {'onStart' : initPasteContent, 'onComplete' : cbPasteContent})">

</form>

<form>
 <select ondblclick="AIM.submit(this.form, {'onStart' : initPasteContent, 'onComplete' : cbPasteContent});this.form.submit()">
   <option>Click me!</option>
 </select>
</form>

<div style="border:1px solid" id="foo"></div>
<div style="border:1px solid red" id="bar"></div>
```

Permalänk: https://www.webforum.nu/p/2168602

## #12 — Peter S, 2009-02-11T18:21Z

Problemet ligger i vad du ger till iframe.src. Någonting annat än about : blank fixar biffen; varför används about : blank?

Permalänk: https://www.webforum.nu/p/2168603

## #13 — MickeA.com, 2009-02-11T18:21Z

Yes, lade till *this.form.submit()* efter AIM.. som i ditt exempel och det funkade bra.

Tack för hjälpen!

Permalänk: https://www.webforum.nu/p/2168604

## #14 — MickeA.com, 2009-02-11T18:22Z

> **[Peter S skrev:](https://www.webforum.nu/p/1456061)**
>
> Problemet ligger i vad du ger till iframe.src. Någonting annat än about : blank fixar biffen; varför används about : blank?

Jag vet inte varför det är så.

Permalänk: https://www.webforum.nu/p/2168605

## #15 — MickeA.com, 2009-02-11T20:15Z

> **[Peter S skrev:](https://www.webforum.nu/p/1456061)**
>
> Problemet ligger i vad du ger till iframe.src. Någonting annat än about : blank fixar biffen; varför används about : blank?

Någonting annat? Alltså vad som helst? Är det vettigt att ha en "foo.htm" som laddas in i framen som default?

Permalänk: https://www.webforum.nu/p/2168614

## #16 — Peter S, 2009-02-11T20:17Z

Japp, det verkar som så :)

Permalänk: https://www.webforum.nu/p/2168615

## #17 — MickeA.com, 2009-02-11T20:27Z

Skumt, ska testa det imorrn.
Om jag nu lägger till något annat ist. för about:blank, kan jag skippa *this.form.submit();* längst bak då?

Permalänk: https://www.webforum.nu/p/2168617

## #18 — Peter S, 2009-02-11T20:57Z

Ja, det kan du hoppa över då.

Permalänk: https://www.webforum.nu/p/2168625

---

Tråden på webben: https://www.webforum.nu/amne/javascript/176707-posta-formulär-och-kalla-på-funktion
