Проверка писем с помощью jQuery - PullRequest
0 голосов
/ 08 марта 2011

У меня есть модальный диалог из jQuery UI, который появляется, когда я нажимаю кнопку.Вот код jQuery, касающийся модального диалога:

     $('#eb1').click(function(){
        $('#emailPost').submit();
        $("#emailModal").dialog('close');
     });

     $('#eb2').click(function(){
        $('#emailPost2').submit();
        $("#emailModal").validate({
        rules: {
            emailAddress: {
                required: true,
                email: true
            }
        }
        }).showErrors({"error": "Invalid Email!"});
        $("#emailModal").dialog('close');
     });

Вот PHP, который отображает все это:

echo "<form action='php/emailPost.php' method='POST' class='inline' id='emailPost'>";
echo "<input type='hidden' value='" . $_SESSION["email"] . "' name='emailAddress'>";
echo "<input type='button' value='Email To Me' id='eb1'/>";
echo "<input type='hidden' name='passedCoupID' value='" . $coupID . "'/>";
echo "</form>";
echo "<h3>Or</h3>";
echo "<form action='php/emailPost.php' method='POST' class='inline' id='emailPost2'>";
echo "<label name='error'></label>";
echo "<input type='text' value='Enter an Email' class='required email' name='emailAddress' style='display: inline-block;'>";
echo "<input type='button' value='Email' id='eb2'/>";
echo "<input type='hidden' name='passedCoupID' value='" . $coupID . "'/>";
echo "</form>";

Я знаю, что кнопки работают нормально, и они отправляются отлично, нопоследний подает независимо от результата проверки.Я довольно новичок в jQuery, как я могу заставить его отображать ошибку, если она недействительна, и не отправлять, если адрес электронной почты не действителен?

Ответы [ 3 ]

1 голос
/ 08 марта 2011
$('#eb1').click(function(){
    $('#emailPost').submit();
    $("#emailModal").dialog('close');
 });

 $('#eb2').click(function(){
    $('#emailPost2').submit(function(){
      var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
      var address = $("#emailModal").val();
      if(reg.test(address) == false) {
      alert('Invalid Email Address');
      return false;
   }
   else
   {
     return true;
   }
 });

 $("#emailModal").dialog('close');
 });
0 голосов
/ 08 марта 2011

Вы используете этот плагин проверки?http://jquery.bassistance.de/validate/demo/

Если это так, похоже, вы не совсем правильно делаете это.

Измените кнопки на type = "submit", затем подключите validate ()вызовы emailPost '(если это даже требуется) и' emailPost2 'в document.ready вместо этого.

$(document).ready(function(){
    $("#emailPost2").validate({ 
        rules: {
            emailAddress: {
                required: true,
                email: true
            }
        }
        }).showErrors({"error": "Invalid Email!"});
});

Посмотрите на исходный код в этой ссылке для некоторых примеров.

0 голосов
/ 08 марта 2011

Похоже, вы звоните $('#emailPost2').submit();прежде чем позвонить, подтвердите.Разве это не отправит вашу форму до проверки?

Когда я использовал плагин jQuery Validator, я объявил правила проверки в $(document).ready().Может быть, вы должны попытаться объявить правила раньше, чем при нажатии кнопки.

Если модальное всплывающее окно создается динамически, вы можете использовать

$("#emailPost2").live(function() {validation rules});

, чтобы при создании формы к ней применялись правила проверки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...