За последние 24 часа нас посетили 17716 программистов и 1655 роботов. Сейчас ищут 909 программистов ...

проблема с проверкой формы

Тема в разделе "JavaScript и AJAX", создана пользователем Kharin, 4 мар 2014.

  1. Kharin

    Kharin Новичок

    С нами с:
    4 дек 2013
    Сообщения:
    11
    Симпатии:
    0
    Здравствуйте, подскажите пожалуйста с одним вопросом.
    есть проверка формы
    Код (Text):
    1.  
    2. (function( $ ){
    3.  
    4.     $(function() {
    5.  
    6.         $('.rf').each(function(){
    7.             var form = $(this),
    8.                 btn = form.find('.btn_submit');
    9.            
    10.             form.find('.rfield').addClass('empty_field');
    11.            
    12.             // Функция проверки полей формы
    13.             function checkInput(){
    14.                 form.find('.rfield').each(function(){
    15.                     if($(this).val() != ''){
    16.                         $(this).removeClass('empty_field');
    17.                     } else {
    18.                         $(this).addClass('empty_field');
    19.                     }
    20.                 });
    21.                 form.find('#email').each(function(){
    22.                       if($(this).val() != '') {
    23.                             var pattern = /^([a-z0-9_\.-])+@[a-z0-9-]+\.([a-z]{2,4}\.)?[a-z]{2,4}$/i;
    24.                             if(pattern.test($(this).val())){
    25.                                 $(this).removeClass('empty_field');
    26.                             } else {
    27.                                 $(this).addClass('empty_field');
    28.                             }
    29.                         } else {
    30.                                 $(this).addClass('empty_field');
    31.                         }
    32.                 });
    33.             }
    34.            
    35.             // Функция подсветки незаполненных полей
    36.             function lightEmpty(){
    37.                 form.find('.empty_field').css({'border-color':'#d8512d'});
    38.                 setTimeout(function(){
    39.                     form.find('.empty_field').removeAttr('style');
    40.                 },500);
    41.             }
    42.            
    43.             setInterval(function(){
    44.                 checkInput();
    45.                 var sizeEmpty = form.find('.empty_field').size();
    46.                 if(sizeEmpty > 0){
    47.                     if(btn.hasClass('disabled')){
    48.                         return false
    49.                     } else {
    50.                         btn.addClass('disabled')
    51.                     }
    52.                 } else {
    53.                     btn.removeClass('disabled')
    54.                 }
    55.             },500);
    56.  
    57.             btn.click(function(){
    58.                 if($(this).hasClass('disabled')){
    59.                     lightEmpty();
    60.                     return false
    61.                 } else {
    62.                     form.submit();
    63.                 }
    64.             });
    65.            
    66.         });
    67.        
    68.     });
    69.  
    70. })( jQuery );
    Все работает, подсвечивается красным, но хочу добавить, что бы в значение inputa, вместо введенных юзером неверных данных появлялось сообщение, мол ведите корректный е mail, и еще хотелось бы сделать проверку занятости логина и почты. Реально через JQuerry открыть php файл передать туда логин и почту и в нем подключиться к базе, проверить и вернуть результат? спасибо!
     
  2. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    http://api.jquery.com/val/

    https://api.jquery.com/jQuery.post/
     
  3. Kharin

    Kharin Новичок

    С нами с:
    4 дек 2013
    Сообщения:
    11
    Симпатии:
    0
    Спасибо с 1 проблемой разобрался, осталась вторая проверить на наличие в базе.
    код скрипта
    Код (Text):
    1. form.find('#email').each(function(){
    2.                       if($(this).val() != '') {
    3.                             var pattern = /^([a-z0-9_\.-])+@[a-z0-9-]+\.([a-z]{2,4}\.)?[a-z]{2,4}$/i;
    4.                             if(pattern.test($(this).val())){
    5.                                     checkDomain($(this).val());
    6.                             } else {
    7.                                 $(this).addClass('empty_email');
    8.                             }
    9.                         } else {
    10.                                 $(this).addClass('empty_field');
    11.                         }
    12.                 });
    13.                
    14.             }
    15.             function checkDomain(domain) {
    16.                 alert(domain);
    17.                     $.ajax({
    18.                     type:"POST",
    19.                     url: "domain.php",
    20.                     data: {
    21.                     domain:domain
    22.                     },
    23.                 success: function(result) {
    24.                     if(result = false) {
    25.                         alert(result);
    26.                     } else {
    27.                         alert(result);
    28.                     }
    29.                 }
    30.             });
    31.             }
    и код php
    Код (Text):
    1. <?php
    2.     $domainName = $_POST['domain'];
    3.     if({$domainName =="1@mail.ru"){
    4.     echo $result['true'];
    5.     }
    6. ?>
    который допустим нашел в базе такой маил и вернул true;

    объясните пожалуйста куда вернул он true ?
    и что-то после моего шаманства, перестал входить в функцию checkDomain(); еще интересна эта строчка domain:domain, что она значит? я с jQuery не особо дружу.
     
  4. Kharin

    Kharin Новичок

    С нами с:
    4 дек 2013
    Сообщения:
    11
    Симпатии:
    0
    Как влезть в php скрипт и взять оттуда результат я разобрался,
    Код (Text):
    1.     form.find('#email').each(function(){
    2.                       if($(this).val() != '') {
    3.                             var pattern = /^([a-z0-9_\.-])+@[a-z0-9-]+\.([a-z]{2,4}\.)?[a-z]{2,4}$/i;
    4.                             if(pattern.test($(this).val())){
    5.                                      checkDomain($(this).val())
    6.                                 } else {
    7.                                 $(this).addClass('empty_email');
    8.                             }
    9.                         } else {
    10.                                 $(this).addClass('empty_field');
    11.                         }
    12.                 });
    Код (Text):
    1. function checkDomain(param1) {
    2.                 $.ajax({
    3.                     type: "POST",
    4.                     url: "domain.php",
    5.                     data: "data=" + param1,
    6.                     success: function(data){
    7.                         if(data=="true"){
    8.                         return true;
    9.                     }else{
    10.                         return false;
    11.                     }
    12.                     }
    13.                 });
    14.             }
    Но теперь не могу из функции checkDomain вернуть значение, то есть я пишу так
    Код (Text):
    1. if(checkDomain($(this).val()))
    2.                  {
    3.                  alert("true");
    4.                  }
    и ничего не происходит, почему?
     
  5. Kharin

    Kharin Новичок

    С нами с:
    4 дек 2013
    Сообщения:
    11
    Симпатии:
    0
    Пробовал так, тоже не выходит, подскажите пожалуйста!
    Код (Text):
    1.     form.find('#email').each(function(){
    2.                     var flag;
    3.                       if($(this).val() != '') {
    4.                        
    5.                             var pattern = /^([a-z0-9_\.-])+@[a-z0-9-]+\.([a-z]{2,4}\.)?[a-z]{2,4}$/i;
    6.                             if(pattern.test($(this).val())){
    7.                                         var promise = checkDomain($(this).val());
    8.                                         promise.success(function (data)
    9.                                         {
    10.                                         if (data==true){
    11.                                             flag=true;
    12.                                         }else {flag=false;}
    13.                                         });
    14.                                         alert(flag);
    15.                                 } else {
    16.                                 $(this).addClass('empty_email');
    17.                             }
    18.                         } else {
    19.                                 $(this).addClass('empty_field');
    20.                         }
    21.                 });
    22.                
    23.             }
    24.             checkDomain = function (param1) {
    25.                 return $.ajax({
    26.                     type: "POST",
    27.                     url: "domain.php",
    28.                     data: "data=" + param1
    29.                 });
    30.                
    31.             }
     
  6. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    HTML:
    Код (PHP):
    1. <div class="msg"></div> 
    JS:
    Код (PHP):
    1. $.post('email.php',email:'email@google.com',function(data) {
    2.     if(data) {
    3.         $('.msg').html(data);
    4.     }
    5. }): 
    PHP:
    Код (PHP):
    1. $email='email@google.com';
    2. if(isset($_POST['email']) ) {
    3.     if(empty($_POST['email']) {
    4.         echo'Введите E-mail!';
    5.     } else if($_POST['email']==$email) {
    6.         echo'E-mail: '.$_POST['email'].' уже существует!';
    7.     }
    8. }