Использование contenteditable в форме электронной почты с использованием jQuery / Javascript

Я взял несколько сценариев из других источников стека, чтобы создать контактную форму, которая отправляет мне электронное письмо, когда пользователь отправляет сообщение.

HTML:

<form onsubmit="return getContent()">
    <fieldset>
        <input name="name" value="NAME" style="max-width:15%" type="text"/>
        <input name="email" value="EMAIL" style="max-width: 30%" type="text"/>
        <div id="message" contenteditable="true" name="message" value="expanding textarea">HELLO</div>
        <textarea id="my-textarea" value="MESSAGE" style="display:none"></textarea>
        <input type="submit" style="margin-right:0" value="Submit" />
    </fieldset>
</form>

СЦЕНАРИИ:

    function getContent(){
        document.getElementById("my-textarea").value = document.getElementById("message").innerHTML;
    }

    $('form').submit( function() {
    $.ajax({
        type: "POST",
        url: "email.php",
        data: $(this).serialize(),
        success: function() {
            // Update page with success message
        }
    });
    return false;
});

PHP:

<?php 

$recipient = "[email protected]"; //recipient 

$Name = ($_POST['name']); //senders name 
$email = ($_POST['email']); //senders e-mail adress 
$mail_body = ($_POST['message']); //mail body 

$header = "From: ". $Name . " <" . $email . ">\r\n"; //optional headerfields 

mail($recipient, $subject, $mail_body, $header); //mail command :) 
?>

Сценарий ДОЛЖЕН получить содержимое, введенное в contenteditable div, и передать его в скрытое текстовое поле, а затем отправить на мою электронную почту. Однако в настоящее время он проходит только через поля "name" и "email", оставляя тело сообщения пустым.

Что я здесь пропустил?

РЕДАКТИРОВАТЬ: Сделана небольшая ошибка в скрытом текстовом поле кода выше, значение = "СООБЩЕНИЕ", а не "ТЕМА". Тем не менее, код не работает.


person JVG    schedule 10.01.2012    source источник


Ответы (1)


Контентный контент не проходит через форму при отправке. Но похоже, что вы используете какой-то JS, чтобы получить содержимое редактируемого содержимого div и поместить его в текстовое поле с именем «subject».

Следовательно, он будет доступен только через $_POST['subject'].

Кроме того, вы выполняете onsubmit = "" в html и on submit в файле JS. Я не думаю, что оба будут работать, вам лучше объединить их (т.е. просто использовать файл JS).

Он также не будет работать без включенного JS, что, я бы сказал, является более серьезной проблемой.

person Nick    schedule 10.01.2012
comment
Ах, вы поняли - оказалось, что он ищет name="xyz" часть форм, где я тупо думал, что он смотрит value=! Ура, дружище. - person JVG; 10.01.2012