webForumDet fria alternativet
Logga in / Bli medlem

Javascript formulär

JavaScript

5 svar · 625 visningar · startad av hakan@4u2.se

Medlem sedan aug. 2000333 inlägg
Frågan#1

Har gjort ett epost formulär där man skriver in sin epost adress, problemet är att "epost" värdet man skriver in inte följer med till http://www.test/test.asp, var är det som saknas? Javascript är inte min starka sida ;)

<script type="text/javascript">
function newsletterForm() 
{
 var form_action = document.forms[0].action;
 var form_target = document.forms[0].target;
 document.forms[0].action = "http://www.test/test.asp";
 document.forms[0].target = "_blank";
 document.forms[0].submit();
 document.forms[0].action = form_action;
 document.forms[0].target = form_target;
}</script>

<form action="" method="post">
 <input type="Text" name="epost" value="Din e-postadress">
 <input type="submit" value="Ja tack" onclick="newsletterForm(); return false;">
</form>
Medlem sedan juni 20008 205 inlägg
#2

Inte så konstigt att det inte funkar, det tar ju bort action från formuläret innan det submittar. Skippa scriptet helt och hållet, du behöver det inte:

<form action="http://www.test/test.asp" method="post" target="_blank">
 <input type="Text" name="epost" value="Din e-postadress">
 <input type="submit" value="Ja tack">
</form>
Medlem sedan aug. 2000333 inlägg
#3

Så kan man göra, men jag måste använda javascript formulär där jag ska använda det annars går det inte. Går det att få till?

Medlem sedan aug. 20039 340 inlägg
#4
<script type="text/javascript">
function newsletterForm() 
{
 var form_action = document.forms[0].action;
 var form_target = document.forms[0].target;
 document.forms[0].action = "http://www.test/test.asp";
 document.forms[0].target = "_blank";
 document.forms[0].submit();
 setTimeout(function(){
  document.forms[0].action = form_action;
  document.forms[0].target = form_target;
 },200);
}</script>

<form action="" method="post">
 <input type="Text" name="epost" value="Din e-postadress">
 <input type="submit" value="Ja tack" onclick="newsletterForm(); return false;">
</form>

Så där kan man göra. Eller så kan man skapa ett helt nytt formulär via DOM.

<script type="text/javascript">
function newsletterForm() 
{
 var newForm = document.createElement("FORM")
 document.body.appendChild(newForm);

 var newInputElem = document.createElement("INPUT");
 newInputElem.type = "hidden";
 newInputElem.name = "epost";
 newInputElem.value = document.forms[0].epost.value;
 newForm.appendChild(newInputElem);

 newForm.action = "http://www.test/test.asp";
 newForm.target = "_blank";
 newForm.submit();
}</script>

<form action="" method="post">
 <input type="Text" name="epost" value="Din e-postadress">
 <input type="submit" value="Ja tack" onclick="newsletterForm(); return false;">
</form>

Fritt ur minnet, kan innehålla buggar/fel. Ännu bättre vore det förstås om du lärde dig använda AJAX.

Medlem sedan juni 20008 205 inlägg
#5

hakan@4u2.se skrev:

jag måste använda javascript formulär där jag ska använda det annars går det inte

Varför då?

Medlem sedan aug. 2000333 inlägg
#6

Tusen Tack, den översta fungerar utmärkt!

Anledningen till att jag måste ha det så här, är att webbsajten där jag ska lägga upp formuläret krävet att man använder externt Javascript, vet inte exakt varför, men annars var de tvunga att ändra en massa på sin sida sa de. CMS verktyg kanske är en orsak! Att fixa det hamnade hos mig fast jag normalt sätt inte programmerar i Javascript.

262 ms totalt · 4 externa anrop · v20260731065814-full.5386d3bf
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)