Проверка на клонированную форму - PullRequest
0 голосов
/ 03 сентября 2011

У меня есть форма, которая клонируется с помощью jquery.Поскольку он клонирован, проверка не работает должным образом.

Мне удалось получить уведомление о том, что поле не заполнено, но оно все еще отправляет форму после очистки предупреждающего сообщения.

Есть идеи?

Код ниже ...

$(document).ready(function(){
   $("ul > li > a").click(function() {
       $popupCopy = $("." + $(this).attr("href")).html();
       $popupAddClass = $(this).attr("href");
       $popupWidth = parseFloat($("." + $(this).attr("href")).attr("title")) + 80;
       $("<div class='popupContainer'><div class='popupContent " + $popupAddClass + "'>" + $popupCopy + "</div><img src='images/close.png' class='closePopup'></div>").appendTo("body");
       $(".popupContainer").fadeIn(500);
       return false;
   });

   $(".giftName").live("focus", function() {
       if ( $(this).val()=="Name") {
            $(this).val('');
       };
   });

   $(".giftName").live("blur", function() {
       if ( $(this).val()=="") {
            $(this).val('Name');
       };
   });

   $('.giftSubmit').live('click', function(){  
       if( ! checkvalid() ) {  
           alert('Need to fill-out all fields')  
       }  
       else {  
           alert('Thanks')  
       }  
   });

});

function checkvalid(){
   var valid = true;
   $('.giftName').each(function(){
       if (this.value == '' || this.value == 'Name' || this.value == null) {
           valid = false;
           return;
       }
   })
   return valid;
}

тело:

<div class="pageContainer">
    <div class="bodyPanel">   
        <ul>
            <li><a href="giftlist">Gift list</a></li>
        </ul>   
    </div>
</div>

<div class="popupsHidden">
    <div class="giftlist">
        <form action="sendGift.php" class="giftForm" method="post">
            <input name="giftName" class="giftName" type="text" value="Name" />
            <input name="" class="giftSubmit" type="submit" value="Send your promised gift..." />
        </form>
    </div>
</div>

Ответы [ 2 ]

2 голосов
/ 03 сентября 2011

Вместо прослушивания события click на кнопке отправки попробуйте перечислить событие submit в самой форме:

$('.giftForm').live('submit', function() {
    if ( ! checkValid() ) {
        alert('not valid !');
        return false;
    }
});
0 голосов
/ 03 сентября 2011

В вашей функции $('.giftSubmit').live('click' ... необходимо добавить return false; после отображения сообщения об ошибке проверки. Это остановит распространение события.

Поскольку событие click не останавливается, форма отправляется, несмотря на ошибку проверки.

...