• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[GELÖST] Mit Javascript Inhalte aus form in Mail übertragen

Mokkor

New member
Hallo liebe Gemeinde,

ich habe mal wieder ein Problem. Und zwar bin ich eigentlich soweit fertig, aber eine Kleinigkeit funktioniert noch nicht so recht.
Ich habe eine Anwendung an deren Ende ein Feedbackbogen ausgefüllt werden soll und per Email vom Client gesendet werden soll. Das geht auch soweit ganz gut, nur beim IE benötige ich eine Javascriptfunktion um die Inhalte aus dem formular zu übernehmen. Ich möchte das nur ausgewählte (checked or selected) Elemente angezeigt werden in der Email. Leider zeigt es alle radio an und keine select.
Da ich mich leider mit Javascript nicht auskenne komme ich hier nicht weiter.

Ich hoffe es kann wer helfen, bei Unklarheiten einfach fragen.


Gruß

Mokkor



Code:
<form method="post" action="mailto:test@gmx.de?subject=Formular Auswertung" enctype="text/plain" id="mailtoForm" name="Formular">
         
        <div class="head2">Formular zur Auswertung</div><p>
        <b>Name:</b>  <input type="text" name="Name" list="namen" size="30"><p>
        <b>Datum (TT.MM.JJJJ):</b>  <input type="text" name="Datum" size="10" maxlength="10" onblur="this.value=input_date()">    
        <b>Uhrzeit (HH:MM):</b>  <input type="text" name="Zeit" size="5" maxlength="5" onclick="this.value=input_time()"><p>
	<b>Nummer:</b>  <input type="text" name="Nummer" size="6" maxlength="6" value="R"><p>
	<b>Gab es Probleme im Ablauf?</b>  
        <input type="radio" name="Problem" value="Ja" onclick="wa1();"> JA  
        <input type="radio" name="Problem" value="Nein" onclick="wa1();" checked> NEIN<p>
	<div id="t1">Wenn Ja, Welche?  
	<select name="auswahl" size="1">
	<option>Test1</option> 
	<option>Test2</option> 
	<option>Sonstige</option> 
	</select>
        <input type="text" name="Sonstige" size="100" maxlength="100" disabled></div><p>
	<b>Wünschen Sie eine Nachbesprechung?</b> 
        <input type="radio" name="Nachbesprechung" value="Ja" onclick="a3()">JA  
        <input type="radio" name="Nachbesprechung" value="Nein" onclick="a4()" checked>NEIN<p>
        <div id="t2">Wenn ja, wann am besten?  
        <input type="text" name="Termin" size="50" maxlength="100"></div><p>
	<b>Wünschen Sie Recherchen?</b> 
        <input type="radio" name="Recherche" value="Ja" >JA  
        <input type="radio" name="Recherche" value="Nein" checked>NEIN<p>
	<div align="center"><button id="w1" type="submit" onclick="gp()">Senden & Schließen</button></div>

</form>

Und hier das Script

Code:
function gp(){
    var form = document.getElementById('mailtoForm');
    var fields = [];
    for (var i = 0; i < form.elements.length; i++) {
        if (form.elements[i].nodeName == 'TEXTAREA' ||
            form.elements[i].nodeName == 'INPUT' ) {
            fields.push(form.elements[i].name + ' = ' + form.elements[i].value);
        }
    }
    var body = fields.join('\n');
    form.action += '&body=' + encodeURIComponent(body);

}
 
Zuletzt bearbeitet von einem Moderator:
Feedbackbogen ausgefüllt werden soll und per Email vom Client gesendet werden soll.
du musst ganz ganz dringend an deinen formulierungen arbeiten! du zeigst keine mailfunktion sondern ein html post-form das zum ausfüllen einer e-mail eingabemaske des lokalen e-mail client benutzt werden soll.

nebenfrage: warum versuchst du es auf diese weise und nicht als echte e-mail aus einem serverscript heraus? hast du bedacht, dass das alle diejenigen nicht nutzen können, die kein lokales e-mail programm installiert haben?

Das geht auch soweit ganz gut, nur beim IE benötige ich eine Javascriptfunktion um die Inhalte aus dem formular zu übernehmen.
wie sieht denn der teil für andere browser aus was du versucht hast?

Leider zeigt es alle radio an und keine select.
zeig mal das script dazu bitte.
das gezeigte script verarbeitet nur textarea und input. wie sieht der code aus, den du für die anderen typen probiert hast und was steht in der console?
 
Hallo mikdoe,

ich sagte ja, ich habe keine Ahnung davon. Es bezieht sich auf die Arbeit dieser Auswertungsbogen. Somit war die einfachste Lösung es über den lokalen E-Mail Clienten zu machen. Jeder hat es installiert und alle nutzen entwerder FF oder IE. Im FF geht es wunderbar auch ohne Script. Problem ist eben der IE. Andere Browser gibt es bei uns nicht.

Zum anderen Teil, ich habe kein weiteres Script, ich habe nur dieses. Und von Serverscript habe ich leider auch keine Ahnung. Einzige (bessere) Alternative wäre die Verknüpfung mit einer Access oder Excel Datenbank um eine Statistik zu erheben. Nun habe ich aber keine Ahnung wie ich es damit verbinde.

Ich dachte eben, das aktuelle Script so verändern, dass es die Textfelder und selected ausliest und eben nur die checked sind oder beschrieben.

Ps: verzeih meine schlechte Formulierung.

Gruß

Mokkor
 
Hallo mikdoe,

also bei mir geht es mit dem Script. Aber ich habe es jetzt anders gelöst.

Code:
function gp(){
    var form = document.getElementById('mailtoForm');
    var fields = [];
    for (var i = 0; i < form.elements.length; i++) {
        if (form.elements[i].nodeName == 'TEXTAREA' ||
            form.elements[i].nodeName == 'SELECT' ||
            form.elements[i].nodeName == 'INPUT') {
            fields.push(form.elements[i].name + ' = ' + form.elements[i].value);
        }
    }
    var body = fields.join('\n');
    form.action += '&body=' + encodeURIComponent(body);

}

Habe einfach Select mit hinein genommen. Jetzt gibt er mir im IE das Asugewählte einer Auswahlliste aus. Habe also alle Checkboxen und Radio Felder in Select geändert.
Und schon klappt es so wie ich wollte.

Das steht dann in der Mail:

Code:
Name = 
Datum = 
Zeit = 
Nummer = R
Probleme = Ja
Problemart = Sonstige
Sonstige = 
Nachbesprechung = Nein
Termin = 
Recherche = Nein

falls es noch alternative Ideen gibt, bin ich dankbar.

Gruß

Mokkor
 
Leider zeigt es alle radio an
Du prüfst ja auch nicht, ob die Elemente selektiert sind oder nicht.
wie kann denn radio funktionieren?
Raios sind doch auch nur <input>s mit type="radio".
aus select listen kann man auch das ausgewählte bekommen
Das macht doch SELECT_NODE.value auch...
Habe also alle Checkboxen und Radio Felder in Select geändert.
Das hättest du gar nicht machen müssen, wenn du die Checkboxen und Radios überprüft hättest:
Code:
function gp(){
    var fields = Array.prototype.slice.call(document.getElementById("mailtoForm").elements).filter(function(el){
		if (
			el.nodeName === "INPUT" &&
			(el.type === "radio" || e.type = "checkbox") &&
			!el.checked
		){
			return false;
		}
		else {
			return true;
		}
	}).map(function(el){
		return el.name + " = " + el.value;
	});
    var body = fields.join('\n');
    form.action += '&body=' + encodeURIComponent(body);
}
- ungetestet.
 
Zurück
Oben