2017-08-05 2 views
-2

Fast noob mit Javascript/Jquery hier. Ich erstelle ein relativ einfaches E-Mail-Formular, das ich mit einer der wenigen vordefinierten Vorlagen füllen möchte, die in einer mit PHP abgerufenen MySQL-Datenbank gespeichert sind.Einfügen von Text in Textarea mit Jquery

Das Auswahl-Pulldown-Menü wird aus den Datenbankeinträgen (Beschreibung) erstellt und sollte beim Ändern des Benutzers den Betreff und Text in die entsprechend benannten Felder laden.

Ich hatte Erfolg mit der Verwendung von PHP, um JavaScript zu erstellen, wenn Anweisungen zum Laden der Seite mit dem Auswahlmenü zu vergleichen, und es lädt den Betreff in das Textfeld. Beim Versuch, ein Textfeld zu laden, schlägt das gesamte Skript fehl.

<script> 
$(document).ready(function(){ 
$('#Template').on('change',function(){ 
    var Template = $(this).val(); 
<?php 
$emailQuery = "SELECT RecID,Subject,Body FROM ST_Email ORDER BY Sort ASC"; 
$emailResults = mysqli_query($connect, $emailQuery); 
while ($ERow = mysqli_fetch_array($emailResults)) 
{ 
$RecID = $ERow['RecID']; 
$EmailContents = addslashes($ERow['Body']); 
$Subject = $ERow['Subject']; 
echo "if (Template == $RecID) 
{ 
    $(\"#Subject\").val(\"$Subject\"); 
    $(\"#EmailContents\").val(\"$EmailContents\"); 
} 
"; 
} 
?> 
    }); 
}); 
</script> 

Später, in der HTML/PHP ...

echo "<p>Please choose an email template from this pulldown menu:</p> 
<p><select name=\"Template\" id=\"Template\"><option>-- Blank --</option>"; 
$emailTemplateQuery = "SELECT RecID,Description FROM ST_Email ORDER BY Sort ASC"; 
$emailTemplateResult = mysqli_query($connect, $emailTemplateQuery); 
while ($ETRow = mysqli_fetch_array($emailTemplateResult)) 
{ 
    $Description = stripslashes($ETRow['Description']); 
    $RecID = $ETRow['RecID']; 
    echo "<option value=\"$RecID\">$Description</option>"; 
} 
echo "</select></p>"; 
?> 
Subject line: <input type="text" name="Subject" size="94" id="Subject" /> 
<p>Contents of message:</p> 
<p><textarea name="EmailContents" rows="26" cols="94" id="EmailContents"></textarea> 
<input type="submit" name="Send Email" value="Send Email"/> 

Natürlich wird der Inhalt von $ EmailContents Zeilenumbrüche enthalten, einige spezielle Zeichensetzung und viel Text. Ich habe zunächst versucht, dies mit AJAX und JSON zu tun, konnte aber damit nichts erreichen.

Von dem, was ich gelesen habe, sollte die .val (foo) -Methode für Textareas funktionieren, aber es funktioniert nicht für mich. Ich erwarte, dass der Benutzer eine E-Mail-Vorlage auswählt, den Text bearbeitet und das Formular abschickt.

Würde ich jede Hilfe sehr schätzen. Ich habe eine Menge von den anderen Fragen und Antworten zu Stack Overflow gelernt, aber diese hat mich über den Haufen geworfen.

Antwort

0

Ihr Code ist sehr schlau, aber sieht gut aus für mich. Ich habe jedoch eine Idee, welche Linien es brechen.

$(\"#Subject\").val(\"$Subject\"); 
$(\"#EmailContents\").val(\"$EmailContents\"); 

Stellen Sie sich eine E-Mail-Vorlage mit dem folgenden Inhalt hatte:

Hallo“

Nun, wenn diese Inhalte zu Ihrem JavaScript über PHP eingefügt wurde, es würde brechen aus der val() Funktion, weil es den String-Parameter beendet:

$(\"#EmailContents\").val(\"Hello""); 

Um zu bestätigen, dass dies das Problem ist, öffnen Sie die Entwicklerkonsole und öffnen Sie unter der Registerkarte "Quellen" Ihre JS-Datei, um zu sehen, ob sie das verursacht.

+0

Vielen Dank dafür. Ich habe im Datenbankinhalt keine Anführungszeichen gefunden, aber Zeilenumbrüche und Zeilenumbrüche haben den Code durchbrochen. Jetzt los, um herauszufinden, wie man das ändert, damit es funktioniert ... – Joncalon

Verwandte Themen