За последние 24 часа нас посетили 17342 программиста и 1722 робота. Сейчас ищут 1472 программиста ...

мгновенная валидация формы

Тема в разделе "JavaScript и AJAX", создана пользователем Panich, 26 окт 2012.

  1. Panich

    Panich Активный пользователь

    С нами с:
    10 май 2011
    Сообщения:
    548
    Симпатии:
    0
    Адрес:
    Ростов-Москва
    Вообщем сделал проверку позиций формы по средствам js и после этого данные передаю по средствам ajаx в пхп файл (для дальнейшей проверки),но тут ничего не происходит...помогите разобраться...
    Вот часть js:
    Код (Text):
    1. if (emailVal.length !== 0)
    2.                             {
    3.                                 var mail = /^[a-zA-Z0-9_\.\-]+\@([a-zA-Z0-9\-]+\.)+[a-zA-Z0-9]{2,6}$/;
    4.                                 if(!emailVal.match(mail))
    5.                                 {
    6.                                 $("<div id='indicator'>Email,введённый Вами, не соответствует общепринятому!</div>").insertAfter('#btn_send');
    7.                                 return false;
    8.                                 }
    9.                             }
    10.                             if (codeVal.length == 0)
    11.                             {
    12.                             $("<div id='indicator'>'Не указан проверочный код с картинки!'</div>").insertAfter('#btn_send');
    13.                             return false;
    14.                             }
    15.                             else
    16.                             {
    17.                                 $.ajax({
    18.                                 type: "POST",
    19.                                 url: "inp_coock.php",
    20.                                 data: {'title':titleVal, 'recipe':recipeVal, 'fileCoock1':foto1, 'fileCoock2':foto2, 'fileCoock3':foto3, 'fileCoock4':foto4, 'fileCoock5':foto5, 'text':textVal, 'code':codeVal},
    21.                                 success: function(html){
    22.                                     if (html !== '')
    23.                                     {
    24.                                     $("<div id='indicator'></div>").insertAfter('#btn_send').html(html);
    25.                                     document.getElementById('btn_send').disabled = true;
    26.                                     }
    27.                                     else
    28.                                     {
    29.                                     $('#indicator').fadeOut(1000);
    30.                                     document.getElementById('btn_send').disabled = false;
    31.                                     }
    32.                                 }
    33.                                 });
    34.                             }
    А тут пхп:
    Код (Text):
    1. $text = trim($_POST['text']);
    2.                             if(get_magic_quotes_gpc())
    3.                             {
    4.                             $text = stripslashes();
    5.                             }
    6.                             $text = mysql_real_escape_string(strip_tags($text));
    7.                             $text = htmlspecialchars($text);
    8.                             if(strlen($recipe)<100 || strlen($recipe)>20000)
    9.                             {
    10.                             $html = '<div>"Процес приготовления не может быть меньше 200-от символов!"</div>';    
    11.                             }
    12. echo $html;
    Так вот при проверке js сообщение об ошибке высвечивается на странице как задумано,но при передаче в php вообще ничего не происходит...
    Заранее благодарен!
     
  2. Panich

    Panich Активный пользователь

    С нами с:
    10 май 2011
    Сообщения:
    548
    Симпатии:
    0
    Адрес:
    Ростов-Москва
    Вот и я не пойму в чём может быть дело...
     
  3. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    щьто ета вобще?

    такой переменной у тебя больше нигде нет. это ок?
     
  4. Panich

    Panich Активный пользователь

    С нами с:
    10 май 2011
    Сообщения:
    548
    Симпатии:
    0
    Адрес:
    Ростов-Москва
    А что здесь не так?
    Код (Text):
    1. $text = mysql_real_escape_string(strip_tags($text));
    2. $text = htmlspecialchars($text);
    Убираю html теги и всё такое...

    Я вот сократил даже до:
    Код (Text):
    1. $('#formcoock').submit(function(){
    2.     var titleVal = $('#formcoock input[name=title]').val();
    3.     var recipeVal = $('#formcoock input[name=recipe]').val();
    4.     var foto1 = $('#formcoock input[name=fileCoock1]').val();
    5.     var foto2 = $('#formcoock input[name=fileCoock2]').val();
    6.     var foto3 = $('#formcoock input[name=fileCoock3]').val();
    7.     var foto4 = $('#formcoock input[name=fileCoock4]').val();
    8.     var foto5 = $('#formcoock input[name=fileCoock5]').val();
    9.     var textVal = $('#formcoock textarea[name=text]').val();
    10.     var emailVal = $('#formcoock input[name=email]').val();
    11.     var codeVal = $('#formcoock input[name=code]').val();
    12.      
    13.                                 $.ajax({
    14.                                 type: "POST",
    15.                                 url: "inp_coock.php",
    16.                                 data: {'title':titleVal, 'recipe':recipeVal, 'fileCoock1':foto1, 'fileCoock2':foto2, 'fileCoock3':foto3, 'fileCoock4':foto4, 'fileCoock5':foto5, 'text':textVal, 'code':codeVal},
    17.                                 success: function(html){
    18.                                     if (html !== '')
    19.                                     {
    20.                                     $("<div id='indicator'></div>").insertAfter('#btn_send').html(html);
    21.                                     document.getElementById('btn_send').disabled = true;
    22.                                     }
    23.                                     else
    24.                                     {
    25.                                     $('#indicator').fadeOut(1000);
    26.                                     document.getElementById('btn_send').disabled = false;
    27.                                     }
    28.                                 }
    29.                                 });
    30.                          
    31. });
    то тоже ничего не работает-хотя в переменных есть данные.Алертом проверял-всё в норме...
    т.е. весь js выполняется как нужно,но как только утыкается в строчку:$.ajax({type: "POST",.....всё!Баста!Словно и не написано там ничего...Вроде правильно всё написал,как и раньше использовал,но....запарился уже искать...!!!
    П.С.
    Код (Text):
    1.  if(strlen($recipe)<100 || strlen($recipe)>20000)
    тут я накосячил ,конечно!
     
  5. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    зачем? куда?

    ну ты эскейпишь, потом спешалчаришь... ты понимаешь, что ты происходит со строкой?
    может путь неправильный? и там на серваке ничего нет? ты в чём смотришь? в фаербаге хорошо видны реквесты.
     
  6. Panich

    Panich Активный пользователь

    С нами с:
    10 май 2011
    Сообщения:
    548
    Симпатии:
    0
    Адрес:
    Ростов-Москва
    Я на денвере гоняю сейчас,на фаербаге проверял...
    А что со строкой происходит?Я этот код подсмотрел...)))Не правильно?
     
  7. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    хз.
    url: "inp_coock.php",
    урл указан относительный. т.е. не от корня сайта. может быть из-за этого.
    еще раз. в консоли фаербага пишутся все запросы, смотри, какой там ответ. может он просто не находит этот скрипт.
     
  8. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Меня больше интересует, что это:
    $text = stripslashes();
    Переменная $text после этой строки - становится пустой.
     
  9. Panich

    Panich Активный пользователь

    С нами с:
    10 май 2011
    Сообщения:
    548
    Симпатии:
    0
    Адрес:
    Ростов-Москва
    Обращения к php не происходит,т.е. js выполняется до момента пока не натыкается на строку ajax и потом просто игнорит оставшийся скрипт...вот что я не могу понять-почему отказывается дальше выполнять скрипт...
    или если вот так:
    Код (Text):
    1.     $('#formcoock').submit(function(){
    2.         var titleVal = $('#formcoock input[name=title]').val();
    3.         var recipeVal = $('#formcoock input[name=recipe]').val();
    4.         var foto1 = $('#formcoock input[name=fileCoock1]').val();
    5.         var foto2 = $('#formcoock input[name=fileCoock2]').val();
    6.         var foto3 = $('#formcoock input[name=fileCoock3]').val();
    7.         var foto4 = $('#formcoock input[name=fileCoock4]').val();
    8.         var foto5 = $('#formcoock input[name=fileCoock5]').val();
    9.         var textVal = $('#formcoock textarea[name=text]').val();
    10.         var emailVal = $('#formcoock input[name=email]').val();
    11.         var codeVal = $('#formcoock input[name=code]').val();
    12.          
    13.                                     $.ajax({
    14.                                     type: "POST",
    15.                                     url: "inp_coock.php",
    16.                                     data: {'title':titleVal, 'recipe':recipeVal, 'fileCoock1':foto1, 'fileCoock2':foto2, 'fileCoock3':foto3, 'fileCoock4':foto4, 'fileCoock5':foto5, 'text':textVal, 'code':codeVal},
    17.                                     success: function(html){
    18.                                         if (html !== '')
    19.                                         {
    20.                                         $("<div id='indicator'></div>").insertAfter('#btn_send').html(html);
    21.                                         document.getElementById('btn_send').disabled = true;
    22.                                         }
    23.                                         else
    24.                                         {
    25.                                         $('#indicator').fadeOut(1000);
    26.                                         document.getElementById('btn_send').disabled = false;
    27.                                         }
    28.                                     }
    29.                                     });
    30.                              
    31.     });
    ,то так же отказывается обращаться к php!!!
    П.С. путь к php как только не менял-всё без толку!!!


    Я вот так делаю:
    Код (Text):
    1. if(get_magic_quotes_gpc())
    2. {
    3. $text = stripslashes();
    4. }
    и переменная не пустая!
     
  10. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Я наверное со стеной разговариваю, но я еще раз:
    посмотри в консоли фаербага КУДА ИДУТ ЗАПРОСЫ И КАКИЕ ОТВЕТЫ ОНИ ПОЛУЧАЮТ
     
  11. Panich

    Panich Активный пользователь

    С нами с:
    10 май 2011
    Сообщения:
    548
    Симпатии:
    0
    Адрес:
    Ростов-Москва
    POST http://localhost/classicorange/inp_coock.php 200 OK 98ms

    code 23423
    fileCoock1
    fileCoock2
    fileCoock3
    fileCoock4
    fileCoock5
    recipe рецепт
    text Если тэги <script> имеют аттрибут "type", он должен быть "text/javascript" или "application/javascript". Так же скрипты должны быть читаемы (с корректным синтаксисом).Если тэги <script> имеют аттрибут "type", он должен быть "text/javascript" или "application/javascript". Так же скрипты должны быть читаемы (с корректным синтаксисом).Если тэги <script> имеют аттрибут "type", он должен быть "text/javascript" или "application/javascript". Так же скрипты должны быть читаемы (с корректным синтаксисом).Если тэги <script> имеют аттрибут "type", он должен быть "text/javascript" или "application/javascript". Так же скрипты должны быть читаемы (с корректным синтаксисом).
    title рецепт

    Ответ:<div>"Вы неверно ввели код с картинки!"</div>

    Всё так?Я не очень понимаю где смотреть...простите!
     
  12. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    success: function(html){ Alert(html);
    напиши
     
  13. Panich

    Panich Активный пользователь

    С нами с:
    10 май 2011
    Сообщения:
    548
    Симпатии:
    0
    Адрес:
    Ростов-Москва
    вообще ничего не происходит,словно вот этих строчек не существует:
    Код (Text):
    1. $.ajax({
    2.                                 type: "POST",
    3.                                 url: "inp_coock.php",
    4.                                 data: {'title':titleVal, 'recipe':recipeVal, 'fileCoock1':foto1, 'fileCoock2':foto2, 'fileCoock3':foto3, 'fileCoock4':foto4, 'fileCoock5':foto5, 'text':textVal, 'code':codeVal},
    5.                                 success: function(html){
    6.                                     if (html !== '')
    7.                                     {
    8.                                     $("<div id='indicator'></div>").insertAfter('#btn_send').html(html);
    9.                                     return false;
    10.                                     }
    11.                                     else
    12.                                     {
    13.                                     $('#indicator').fadeOut(1000);
    14.                                     return true;
    15.                                     }
    16.                                 }
    17.                                 });
    Посоветовали на другом форуме добавить после ajax:return false;
    и начали появляться на странице дивы из пхп файла с ошибками,но теперь кнопка снова не активируется!!!
    Я так сделал:
    Код (Text):
    1. else
    2.                             {
    3.                                 $.ajax({
    4.                                 type: "POST",
    5.                                 url: "inp_coock.php",
    6.                                 data: {'title':titleVal, 'recipe':recipeVal, 'fileCoock1':foto1, 'fileCoock2':foto2, 'fileCoock3':foto3, 'fileCoock4':foto4, 'fileCoock5':foto5, 'text':textVal, 'code':codeVal},
    7.                                 success: function(html){
    8.                                     if (html !== '')
    9.                                     {
    10.                                     $("<div id='indicator'></div>").insertAfter('#btn_send').html(html);
    11.                                     return false;
    12.                                     }
    13.                                     else
    14.                                     {
    15.                                     $('#indicator').fadeOut(1000);
    16.                                     return true;
    17.                                     }
    18.                                 }
    19.                                 });
    20.                                 return false;
    21.                             }
     
  14. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    код страницы целиком со всеми скриптами пожалуйста давай.
     
  15. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    я хотел сказать итоговый код HTML =)
     
  16. Panich

    Panich Активный пользователь

    С нами с:
    10 май 2011
    Сообщения:
    548
    Симпатии:
    0
    Адрес:
    Ростов-Москва
    Кхм!Что значит итоговый!?

    П.С.Жене взялся сайт попробовать написать,что бы в декрете чем-нибудь занялась и тут на финальной стадии тупик получился...вот что значит любитель...)))
     
  17. jenya777777

    jenya777777 Активный пользователь

    С нами с:
    16 мар 2010
    Сообщения:
    562
    Симпатии:
    0
    Вот это код! Был бы я троллем, я бы его в цитату взял =)
     
  18. Panich

    Panich Активный пользователь

    С нами с:
    10 май 2011
    Сообщения:
    548
    Симпатии:
    0
    Адрес:
    Ростов-Москва
    Что с кодом не так?Код как код...!
     
  19. jenya777777

    jenya777777 Активный пользователь

    С нами с:
    16 мар 2010
    Сообщения:
    562
    Симпатии:
    0
    Я бы тебе посоветовал забить на свой код и взять плагин jquery validation, подключение простейшее. В полях формы просто прописываешь class required, например
    <input type="text" name="name" class="required" />
    И все, минимум кода, максимум пользы.
     
  20. Panich

    Panich Активный пользователь

    С нами с:
    10 май 2011
    Сообщения:
    548
    Симпатии:
    0
    Адрес:
    Ростов-Москва
    Ну,жаль мне уже потраченного времени и на выходе не разобраться вообще позор!
    Добить уже охота и не париться...да и валидация моя работает прекрасно кроме самого ajax-а он мне нужен,что бы при отправке формы проверять введённый пользователем код проверки-это мне не один готовый плагин не реализует!Вот так!
     
  21. jenya777777

    jenya777777 Активный пользователь

    С нами с:
    16 мар 2010
    Сообщения:
    562
    Симпатии:
    0
    Если ты скажешь, какие ошибки у тебя выходят после того как начинает работать ajax, тебе можно будет помочь. Посмотри в файербаге, какие ошибки выводятся? Скопируй их и покажи здесь
     
  22. Panich

    Panich Активный пользователь

    С нами с:
    10 май 2011
    Сообщения:
    548
    Симпатии:
    0
    Адрес:
    Ростов-Москва
    Да в том-то и деле,что ошибок нет!
    Вообщем смысл в чём:
    я написал валидацию на js,что бы мгновенная проверка производилась и,если ошибочно данные введены,то сразу ошибки и выскакивали на странице.Но когда проверка js доходит до ajax,то ничего не происходит и вступает в силу php, словно части кода не существует - игнор какой-то!Я смог добиться ,что бы выводились ошибки в реальном времени из php только поставив (посоветовали) после ajax код return false;,но в этом случае кнопка отправки формы работать перестала.Как сделать так что бы и сообщения выводились только моментально (без перезагрузки страницы) и кнопка работала?
     
  23. jenya777777

    jenya777777 Активный пользователь

    С нами с:
    16 мар 2010
    Сообщения:
    562
    Симпатии:
    0
    Тогда убери кнопку <input type="submit" > и поставь туда например ссылку <a onclick="foo()"> , тогда у тебя форма не будет отправляться по любому. Данные ты все равно же проверяешь на ajax, так что проблем у тебя на возникнет

    Добавлено спустя 1 минуту 4 секунды:
    Можешь даже совсем тэг <form> убрать, по идее он тоже тебе не нужен =)
     
  24. Panich

    Panich Активный пользователь

    С нами с:
    10 май 2011
    Сообщения:
    548
    Симпатии:
    0
    Адрес:
    Ростов-Москва
    Да в том,то и дело,что аякс не проверяет,когда доходит дело до него,то ничего не происходит-нет проверки,словно части этого кода не существует!!!Хотя пхп файл есть,данные в переменных есть...ума не приложу!
     
  25. jenya777777

    jenya777777 Активный пользователь

    С нами с:
    16 мар 2010
    Сообщения:
    562
    Симпатии:
    0
    Трудно спорить с такими аргументами