1

私のウェブサイトには見栄えの良いスライドアップ/スライドダウン jquery フォームがあります。データを同じファイルに送信して、電子メールを送信します。これはうまくいきます:

$(document).ready(function(){
    $('div.contact a.submit').click(function() {
        var name = $('div.contact input.name').val();
        var email = $('div.contact input.email').val();
        var message = $('div.contact textarea.message').val();
        $('div.contact').slideUp('slow', function() {
            $.ajax({
                type: "POST",
                url: "test.php",
                data: "name=" + name + "&email=" + email + "&message=" + message,
                success: function(msg)
                {
                    $('div.contact').html('<h1>Contact</h1><div class="comment">Success!</div><div class="clear"></div><p class="indent">Thank you, we will be in contact shortly.</p>');
                    $('div.contact').slideDown('slow');
                }//end of success
            });//end of ajax
        });
    });
});

メールを送信するための test.php の先頭の php:

include("expander-b1.0.php");
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
sendmail("admin@site.co.uk", $message, "Contact message from $name", $email);

これは、外部ファイルから単純なメール機能を取得しています。ただし、フォームのエントリを検証し (電子メールの検証を含む)、連絡先ダイブにエラーを表示する方法が必要です。私はjQueryやajaxの経験はありませんが、phpでifステートメントを使用して、ajaxの「成功」部分で変数をエコーすることはできません。

4

3 に答える 3

1
$(document).ready(function(){
    $('div.contact a.submit').click(function() {
        var name = $('div.contact input.name').val();
        var email = $('div.contact input.email').val();
        var message = $('div.contact textarea.message').val();

        //Email Validation
        var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
        if(reg.test(email) == false) {
            alert('Invalid Email Address');
            return false;
        }
        //Name and message VALIDATION
        //-------- goes here ------------//

        $('div.contact').slideUp('slow', function() {
            $.ajax({
                type: "POST",
                url: "test.php",
                data: "name=" + name + "&email=" + email + "&message=" + message,
                success: function(msg)
                {
                    $('div.contact').html('<h1>Contact</h1><div class="comment">Success!</div><div class="clear"></div><p class="indent">Thank you, we will be in contact shortly.</p>');
                    $('div.contact').slideDown('slow');
                }//end of success
            });//end of ajax
        });
    });
});
于 2010-09-29T19:22:02.723 に答える
0

mysql_real_escape() を使用して投稿内の悪意のあるコードをフィルタリングする必要があり、正規表現を使用して有効な電子メールを確認できます。グーグルで検索すると、それに関する多くのドキュメントとチュートリアルが見つかります。

また、自分で簡単に使用できる検証クラスを購入 (または無料のものを見つける) することもできます -> Codecanyon 検証クラス

成功の部分については、この質問を見てください->成功のバック関数を作成するにはどうすればよいですか?

于 2010-09-29T19:14:36.967 に答える
0

http://www.position-absolute.com/articles/jquery-form-validator-because-form-validation-is-a-mess/

コードのセクションが検証に失敗した場合に検証し、自動的にエラー メッセージを挿入するために非常にうまく機能する JQuery ベースの検証スクリプト。ファイルをインクルードし、jquery を追加し (最良の方法については、例のソースを参照)、クラス名に「必須」要素を追加するだけです。あなたの問題に対する完璧な解決策になるはずです....クレイジーな数学や個々のセレクターは必要ありません.

于 2010-09-29T19:20:04.667 に答える