Javascript för att från en popup fylla i ett fält på ursprungssidan

Det är inte varje dag som jag skriver Javascript, och visst brukar jag ibland bli tråkad på ett vänskapligt sätt av mina kollegor för att jobba mot moderna webbplatser men fullständigt ducka för AJAX och Javascript.

Well, är fortfarande mycket skeptisk till Javascript och andra “skumma” krav för att besökarna ska kunna använda det jag producerar men samtidigt har jag börjat ta till mig en hel del av detta åtminstone inne i redaktörslägen i publiceringsverktyg.

En grej som jag passivt letat efter är en möjlighet att kunna fylla formulärfält med information, och särskilt om man öppnar upp ett nytt fönster och vill att det fönstret ska fylla i ett fält i fönstret bakom.

Nu har jag knackat ihop detta efter att ha kollat igenom syntaxen för Javascript:

<script type="text/javascript">
function writeURL(lmntID, valueToPost) {
  if (document.getElementById(lmntID)) return
	window.opener.document.getElementById(lmntID).value = valueToPost;
}
</script>

För att anropa funktionen skriver man:

<a href="#" onclick="writeURL(´src´,´info´)">Skriv</a>

src är namnet på fältet man vill fylla och info är värdet som kommer skrivas in.

Själv använder jag detta än så länge i ett loop-förfarande för att fylla fältet om användaren dubbelklickar på en länk som representerar en fil i servern uppladdningskatalog, exempelvis:

//C#
foreach (string file in Directory.GetFiles(path, "*")) {
	FileInfo fileInfo = new FileInfo(file);
	if (fileInfo.Name != "Thumbs.db") {
	string addr = ConfigurationManager.AppSettings["RootURL"] + virtualPath + fileInfo.Name;
	sb.Append("<a href="#" ondblclick="writeURL(´" + Session["parentField"] + "´,´" + addr + "´)">" + fileInfo.Name + "</a> <br />");
	}
}

Leave a Reply

Your email address will not be published. Required fields are marked *