bloSSAMedlem sedan sep. 2000116 inlägg Hejsan!
Jag har några formulär på en sida som jag postar med hjälp av:
<a href="javascript: formularnamnet.submit()">posta</a>
Nu vill jag slippa att skriva in namnen på formulären i scripten och undrar därför om, och i så fall hur, man plockar fram de olika formulärens namn var för sej.
Jag kan få fram själva namnet på formulären en och en med 'document.forms[0].name', 'document.forms[1].name' osv. Men jag har olika antal formulär på sidorna och filen där själva funktionen '<a href"......."> ligger är en helt annan än de sidorna där jag har formulären.
Tacksam för Hjälp!
/Anders
GuffaMedlem sedan juni 2004533 inlägg Vad ska du ha formulärens namn till? Vad är det som avgör vilket formulär som ska skickas?
bloSSAMedlem sedan sep. 2000116 inlägg Det som avgör vilket formulär som skickas är formulärnamnet i
'<a href="java script: formularnamnet.submit()">posta</a>'. 'formularnamnet' ska vara detsamma som det namnet man angivit FORM-taggen.
Det som avgör vilket formulär som ska skickas är vilken 'posta'-text man klickat på. :-) Det finns alltså en 'posta'-text för varje formulär.
Formulären ska skickas till olika sidor och jag vill undvika att behöva ändra på alla de sidor där formulären finns. På de sidor där formulären finns ligger ett php-script som hämtar '<a href=...>'-funktionen från en annan fil.
/Anders
GuffaMedlem sedan juni 2004533 inlägg Men om du vill slippa skriva namnen på formulären, vad är det då som ska avgöra vilket formulär som ska postas?
bloSSAMedlem sedan sep. 2000116 inlägg Typ så här ser koden ut (obs! exempel!):
Första filen kan innehålla 1,2,3 eller 4st formulär. Jag har ca 30st olika filer, därför vill jag inte behöva gå in och ändra i alla dessa.
En fil med 2st formulär:
.....
<form name="namn_ett" action="fil_ett.php">
<input type="text" name="text_ett">
<?php knapp(posta_ett); ?>
</form>
.....
<form name="namn_tva" action="fil_tva.php">
<input type="text" name="text_tva">
<?php knapp(posta_tva); ?>
</form>
.....
i ovanstående anropar php-satsen en funktion 'knapp' som finns i en fil liknande den nedan:
function knapp($text) {
$kod='<script type="text/javascript">
<!--
document.write(\'<a href="javascript: formnamnet.submit()">$text</a>\');
// -->
</script>';
return $kod;
}
Jag har alltså bara en funktion som skall fungera som posta-knapp till flera formulär. 'formnamnet' skall i ena fallet vara 'namn_ett', i det andra fallet 'namn_tva'. Kunde jag få till den filen jag gav exempel på sist så behöver jag bara ändra i en enda fil.
Jag har en fundering. Kan jag på något vis få fram
'sizeof' 'document.forms.name' eller dylikt? Första gången funktionsfilen anropas antar jag att jag bara har ett 'document.forms.name', andra gången 2st 'document.forms.name' osv...
edit: kompletterade koden i 'den nedersta filen' med en return-sats.
Pröva detta:
Lägg denna kod överst i varje HTML-fil (Alternativt i en js-fil som du inkluderar)
<script type="text/javascript">
function findAndSubmit(th){
while((th = th.parentNode).tagName != "FORM" && (th).tagName != "HTML"){}
if(th.tagName=="FORM"){
th.submit();
}else{
alert("Varning! Länken ej placerad inuti en form!" + th.tagName)
}
return false;
}
</script>
Sedan skriver du om funktionen knapp såhär:
function knapp($text) {
$kod='<script type="text/javascript">
<!--
document.write('<a href="java script: ;;" onclick="return findAndSubmit(this);">$text</a>');
// -->
</script>';
return $kod;
}
Funktionen findAndSubmit kan läggas varsomhelst i ett formulär och söker upp vilket formulär det ligger i och postar detta.
Tänk bara på att du måste skriva return findAndSubmit(this);
return måste du ha, för annars stoppas postningen av länken. this måste du ha för att scriptet ska ha hitta rätt. Om länken inte ligger i ett formulär kommer en varning visas på skärmen.
bloSSAMedlem sedan sep. 2000116 inlägg Funkar det där så är det kanon! När jag får tid ska jag testa att lägga in det i en js-fil som jag redan idag includerar från alla sidor.
Tack så hjärtligt så länge!!
bloSSAMedlem sedan sep. 2000116 inlägg Kan meddela att ovanstående kod funkar perfekt!! Enda 'kruxet' var att hitta någon bra fil att lägga in det i, men det löste sej.
Återigen, Tack!
Ett litet tips bara! Istället för att ändra titeln till löst så finns det en speciell funktion i webForum som gör att du kan acceptera svar. Klicka på länken "Acceptera slutgiltigt svar" längst nere till höger i mitt inlägg (Gärna det ovan istället för detta :) )