2012-02-27 5 views
0

Я создаю всплывающее окно jquery ajax comment, используя плагин проверки jquery. Почему ajax работает по-разному для поля комментариев в сравнении с полями имени и электронной почты? Когда пользователь начинает вводить поле комментариев, удаляется ответ ajax «это поле». Я хотел бы, чтобы это также происходило для полей имени и электронной почты, но они остаются до тех пор, пока пользователь не наберет submit. Как заставить поля имени и электронной почты вести себя как поле комментариев?AJAX Jquery Комментарий Форма ответа

Вот это JS, который контролирует события:

<script> 
    $(document).ready(function() { 
     $('#commentForm').validate({ 
      submitHandler: function(form) { 
       $.ajax({ 
        type: 'POST', 
        url: 'process.php', 
        data: $(this).serialize(), 
        success: function(returnedData) { 
         $('#commentForm').append(returnedData); 
        } 
       });   
       return false; 
      } 
     }); 
    }); 
    </script> 

Форма HTML сконфигурирована как:

<form class="cmxform" id="commentForm" method="POST" action=""> 
    <p> 
    <label for="cname">Name</label> 
    <input id="cname" type="text" name="name" size="60" class="required" minlength="2" /> 
    </p> 
    <p> 
    <label for="cemail">E-Mail</label> 
    <input id="cemail" type="text" name="email" size="60" class="required email" /> 
    </p> 
    <p> 
    <label for="curl">URL</label> 
    <input id="curl" type="text" name="url" size="60" class="url" value="" /> 
    </p> 
    <p> 
    <label for="ccomment">Your comment</label> 
    <textarea id="ccomment" type="text" name="comment" cols="72" rows="8" class="required"></textarea> 
    </p> 
    <p> 
    <div id="button2"><input class="submit" id="submit_btn" type="submit" value="Send Email"/></div> 
    </p> 
</form> 

Спасибо.

+0

Вы можете воспроизвести его в JSFiddle? – gdoron

+0

По какой-то причине я получаю ошибку «shell form not validate» в jsfiddle. Отлично работает на localhost –

+0

Возможно, потому, что ajax ссылается на php-файл? Удаление URL: «process.php» не разрешил мне отправлять сообщения в jsfiddle, однако –

ответ

0

Я решил эту проблему, используя функцию errorPlacement в jQuery. Не указывая errorPlacement для этих элементов, я вызывал конфликт в js.

Вот так, что я решил мою проблему:

$('#commentForm').validate({ 
    submitHandler: function(form) { 
     $.ajax({ 
      type: 'POST', 
      url: 'process.php', 
      data: $(this).serialize(), 
      success: function(returnedData) { 
       $('#commentForm').append(returnedData); 
      } 

     }); 
     return false; 
    }, 
    errorPlacement: function(error, element) { 
     error.insertAfter(element).position({ 
      my: 'right top', 
      at: 'right top', 
      of: element 
     }); 
     error.fadeOut(3000); 
    }, 
}); 
Смежные вопросы