Проверка нескольких форм одним и тем же классом с использованием jquery validate - PullRequest
5 голосов
/ 08 июня 2011

У меня около 10 форм на одной странице с одинаковым классом.Каждая форма должна быть в состоянии проверить и отправить индивидуально.Я использую плагин проверки jquery.Я не могу заставить его работать, и все формы отправляют первую.Кроме того, я не могу указать целевой элемент errormessage в форме с помощью $ (this) .find ('. Error'). Html (error);

Каждая форма выглядит следующим образом:

<form method="post" class="alertform" action="">
<input type="text" onclick="clearText(this)" value="" class="required email" name="email">
<input type="hidden" value="1000004011320719" name="productid" class="productid">
<input type="submit" class="button" name="button" value="Set alert">
<div class="error">&nbsp;</div>
</form>

Мой JS:

$('.alertform').each( function(){
$(this).validate({
rules: {
        emailadres: {
            required: true,
            email: true
            }
    },
    messages: {

                    emailadres: {
            required: "Message 1",
            minlength: "Message 2",
            email: "Message 3"
            }

            },
          errorPlacement: function(error, element) {
 $(this).find('.error').html(error);
},
success: function(label) {
label.addClass("valid").text("")
},
submitHandler: function() { 

  var emailadres = $(this).find("input.email").val();
  var productid = $(this).find("input.productid").val();

  var dataString = 'emailadres=' + emailadres + '&productid=' + productid;

    $.ajax({
  type: "POST",
  url: "/setalert.php",
  data: dataString,
  success: function(msg) {

    if (msg==1) {
    $(this).find(".email").attr("value", ""); 

    $(this).find('.error').html("Pricealert set.")


    }
    else {


    $(this).find('.error').html("Oops.")

          }

}
});

}
})
});

Любая помощь приветствуется!

Ответы [ 2 ]

13 голосов
/ 08 июня 2011

Я посмотрел на ваш HTML n JS, вы можете попробовать это?

$('.alertform').each( function(){
   var form = $(this);
   form.validate({

В основном все ваши $ (это) в форме через наш код

Это часто встречаетсяошибка о $ (this), иногда он терял свою ссылку.

Надежда помогает

:)

4 голосов
/ 09 июня 2011

Полный рабочий JS:

$('.alertform').each( function(){

var form = $(this);
form.validate({
rules: {
        emailadres: {
            required: true,
            email: true
            }
    },
    messages: {

                    emailadres: {
            required: "Required",
            minlength: "Fill it in",
            email: "Not valid"
            }

            },
          errorPlacement: function(error, element) {
          element.nextAll('div').html(error);

},
success: function(label) {
 label.addClass("valid").text("")
},

submitHandler: function() { 

  var email = form.find("input.email").val();
  var productid = form.find("input.productid").val();

  var dataString = 'email=' + email + '&productid=' + productid;

    $.ajax({
  type: "POST",
  url: "/myurl.php",
  data: dataString,
  success: function(msg) {

    if (msg==1) {
    form.find(".email").attr("value", ""); 

    form.find('.error').html("Thanks")


    }
    else {


    form.find('.error').html("Something went wrong")

          }

  }
 });


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