0

フォームのすべてのフィールドをチェックするこの JS スクリプトがあります。問題は、この関数が呼び出されず、その理由がわかりません。

$j(document).ready(function(){  

function validateEmail(email) {         
    var pattern = "/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/";
    return email.match(pattern);  
} 

$j('#contact_submit').submit(function(e){
    if($j('#contact_name').val() == "") {
        e.preventDefault();
        alert("Devi inserire un nome per inviare l'email");
        return false;
    }
    if($j('#contact_email').val() == "") {
        e.preventDefault();
        alert("Devi inserire un contatto email valido per inviare l'email");
        return false;
    }
    if(validateEmail($j('#contact_email').val()) == null)
    {
        e.preventDefault();
        alert("L'email inserita non è in un formato valido");
        return false;
    }
    if($j('#contact_text').val() == "") {
        e.preventDefault();
        alert("Devi inserire un testo per inviare l'email");
        return false;
    }
    return true;
});

});

これがフォームです

<form method="post" name="form" action="email.php">
<table width="550" border="0" align="center" cellpadding="4" cellspacing="0">
      <td align="right">Nome*</td>
      <td><input maxlength="50" id="contact_name" name="contact_name"  size="30" /></td>
    </tr>
    <tr>
      <td align="right">Città</td>
      <td><input maxlength="50" id="contact_city" name="contact_city" size="30" /></td>
    </tr>
    <tr>
      <td align="right">N. Telefono</td>
      <td><input maxlength="20" id="contact_tel" name="contact_tel" size="30" /></td>
    </tr>
    <tr>
      <td align="right">E-mail*</td>
      <td><input maxlength="30" id="contact_email" name="contact_email"  size="30" /></td>
    </tr>
    <tr>
      <td align="right">Testo *</td>
      <td><textarea cols="50" id="contact_text" name="contact_text" rows="5" class="tinymce"></textarea></td>
    </tr>
    <tr>
      <td colspan="2" align="center">
      <p>I campi contrassegnati con l'asterisco (*) sono obbligatori</p>
      <p>   <input id="contact_submit" type="submit" value="Invia" />
            <input id="contact_reset" type="reset" value="Annulla" />
        </p></td>
    </tr>
</table>
</form>

送信ボタンをクリックするだけで、フォームが呼び出され、データが電子メールで送信され、jquery 関数が回避されます。どうしたの?

前もって感謝します

4

4 に答える 4

1

ボタンの代わりに id をフォームに追加します。

<form id="contact_submit" method="post" name="form" action="email.php">
于 2013-04-06T09:41:14.990 に答える
1

そのはず:

$("form[name=form]").submit(...

送信イベントは、送信ボタンではなく、フォームで発生します。

于 2013-04-06T09:41:36.970 に答える
0

submit()ボタンのハンドラーはありません。click()ハンドラーを使用します。

$j('#contact_submit').click(function(e){

});
于 2013-04-06T09:41:19.197 に答える
0

フォームに ID がありません。このため、送信機能が添付されていません。

送信ボタンにはクリック イベントのみがあり、送信イベントはありません。

于 2013-04-06T09:41:25.913 に答える