1

これらすべての初心者なので、コードをできるだけシンプルに保つようにしています。ユーザーが送信前にすべてのフィールドに入力する必要があるのに、送信されるとメールを送信するフォームがあるため、次のスクリプトがあります

<script type='text/javascript'>
    $('#mailform').submit(function()    {
        if (('#emailName' || '#emailEmail' || '#emailSubject').val() == "") {
            alert('Please fill out all fields before clicking submit');
            return false;
        }
        else    {
            alert('Your Email has been sent');
        }
    });
    </script>

これは私のHTMLです

<form id="mailform" method="" action="http://www.mysiteaddress.co.uk/sendmail.php">
                    Your Name: <input id="emailName" name="yourName" type="text" /><br />
                    Your Email:  <input id="emailEmail" name="yourEmail" type="text" /><br />
                    Subject:     <input id="emailSubject" name="subject" type="text" /><br />
                    Message:<br />
                    <textarea name="message" rows="15" cols="40"></textarea><br />
                    <input type="submit" />
                </form>

ただし、送信をクリックすると、フォームは JavaScript を完全に無視し、php を実行します。JavaScript が最初に実行されないのはなぜですか?

検証は現在機能していますが、php を実行すると、フォームがメールで送信されず、else ステートメントのヘッダー部分に直接ジャンプします

if ( preg_match( "/[\r\n]/", $name ) || preg_match( "/[\r\n]/", $email ) ) {

header ( "Location: http://www.mysite.co.uk/contactme" );

}
else    {
        mail( "me@mysite.co.uk", "$name <$subject>",
            $message, "From: $name <$email>" );
        header ( "Location: http://www.mysite.co.uk/contactme" );
}

?>

4

3 に答える 3

2

ifステートメントのセレクターに問題があります。

TypeError: 'undefined' is not a function
(evaluating '('#emailName' || '#emailEmail' || '#emailSubject').val()')

これを試して:

if ($('#emailName').val()==""
  || $('#emailEmail').val()==""
  || $('#emailSubject').val() == ""

http://jsfiddle.net/rPDnQ/

于 2013-07-26T00:42:00.043 に答える
0

JavaScript を介して入力を検証する場合、JavaScript を無効にすると、検証が完全にバイパスされることに注意してください。
そのようなことが起こらないようにする (そして問題を解決する) ために、次のことを行うことができます:

ステップ 1: <input type="submit" /> を使用しないでください。むしろ、<input type="button" />を使用してください。これが何をするかというと、JavaScript なしではフォームがまったく送信されないということです。そのため、ユーザーは JavaScript をオンにする必要があります。したがって、検証が機能するようになりました。ただし、JavaScript が必要であることを必ずユーザーに通知してください。そのためには、単にnoscriptタグを使用できます。

ステップ 2:問題を解決します。ボタンにIDを与え、onclickを定義しますイベント。ここに何を入れるかの例を次に示します。


<script type='text/javascript'>
$(document).ready(function()    {   
    $('#button_id').click(function()    {
        if ($('#emailName').val()=="" || $('#emailEmail').val()==""
            || $('#emailSubject').val() == ""){
            alert('Please fill out all fields before clicking submit');
        }
        else    {
            alert('Your Email will be submitted now');
            $("#mailform").submit();      
        }
    });
});
</script>

これで問題が解決するはずです。

説明が明確で、これが役立つことを願っています。

于 2013-07-26T01:30:14.030 に答える