Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.12.2011, 10:33
Новичок на форуме
Отправить личное сообщение для zura Посмотреть профиль Найти все сообщения от zura
 
Регистрация: 06.12.2011
Сообщений: 4

JQuery function(data)
Скрипт работает хорошо но не не работает
эта часть .append($error.clone().text('This email is already taken')) ... на 24 строке.
???

тоист проверяет не занят ли email если занят, добавляет класс $(this).addClass('error') но потом уже сообщения не виводить .append($error.clone().text('This email is already taken'))

на 18 строке аналогичны скрипт $parentTag.addClass('error').append($error.clone() .text('Required Field')); целиком работает отлично.

спасибо за помощь.

$(document).ready(function() { 
    $('.btn-submit').click(function(e){    
        // Declare the function variables:
        // Parent form, form URL, email regex and the error HTML
        var $formId = $(this).parents('form');
        var formAction = $formId.attr('action');
        var $error = $('<span class="error"></span>');

        // Prepare the form for validation - remove previous errors
        $('li',$formId).removeClass('error');
        $('span.error').remove();

        // Validate all inputs with the class "required"
        $('.required',$formId).each(function(){
            var inputVal = $(this).val();
            var $parentTag = $(this).parent();
            if(inputVal == '){
                $parentTag.addClass('error').append($error.clone().text('Required Field'));                 
            }
            if($(this).hasClass('email') == true){
                $.post("testingEmail.php",{ user_name:$(this).val()} ,function(data){
                        if(data=='no'){
                            $('#mail').each(function(){                         
                            $(this).addClass('error').append($error.clone().text('This email is already taken')); 
                            });
                        }
                    });                
            }
          });    

        // All validation complete - Check if any errors exist
        // If has errors
        if ($('span.error').length > 0) {            
            $('span.error').each(function(){
                
                // Set the distance for the error animation
                var distance = 5;
                
                // Get the error dimensions
                var width = $(this).outerWidth();
                
                // Calculate starting position
                var start = width + distance;
                
                // Set the initial CSS
                $(this).show().css({
                    display: 'block',
                    opacity: 0,
                    right: -start+'px'
                })
                // Animate the error message
                .animate({
                    right: -width+'px',
                    opacity: 1
                }, 'slow');
                
            });
        } else {
            $formId.submit();
        }
        // Prevent form submission
            e.preventDefault();
    });    
    // Fade out error message when input field gains focus
    $('.required').focus(function(){
        var $parent = $(this).parent();
        $parent.removeClass('error');
        $('span.error',$parent).fadeOut();
        });
});


<form id="form-sign-up" class="styled" action="reg.php" method="post">
              <fieldset>
              <dl>
                <dt id="mail" ><label>EMAIL:</label>                 
                  <input name="mail" type="text" id="register-email" class="text-input required email" />
                </dt>
              </dl>
            </fieldset>
</form>
Ответить с цитированием
  #2 (permalink)  
Старый 06.12.2011, 15:49
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

ошибка тут :
$(*!*this*/!*).addClass('error').append($error.clone().text('This email is already taken'));

this не будет элементом и поменяет свой контекст.
можно либо сохранить его в переменной(напр, that) до отсылки ajaх-запроса, а потом обратиться к кнопке через that

либо же использовать функцию $.ajax для отсылки запроса и там же в настройках выставить опцию context, которая изменит значение this на указанное.

if(inputVal == '){

синтаксическая ошибка. как он вообще может работать?

if(blahblah == true){


Цитата:
Судя по вашему сообщению, вы ну совсем не знаете javascript.
Освойте основы языка и вопрос отпадет сам, полностью или частично.
На сайте javascript можно начать изучать с учебника, раздел Основы javascript.
Возможно, вам также понадобится HTML - учебник есть, например, здесь: http://ru.html.net/tutorials/html/.
Ответить с цитированием
  #3 (permalink)  
Старый 08.12.2011, 17:21
Новичок на форуме
Отправить личное сообщение для zura Посмотреть профиль Найти все сообщения от zura
 
Регистрация: 06.12.2011
Сообщений: 4

спасибо за помощь. melky.
Ответить с цитированием
  #4 (permalink)  
Старый 08.12.2011, 17:24
Новичок на форуме
Отправить личное сообщение для zura Посмотреть профиль Найти все сообщения от zura
 
Регистрация: 06.12.2011
Сообщений: 4

if(inputVal == ') это ошибка при copy paste.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамически загружаемая jQuery и jQuery-функции в одном файле 67bytes Общие вопросы Javascript 6 06.03.2013 08:01
2 разных модуля на jQuery - как подключить? finder jQuery 4 23.03.2012 21:29
jQuery jTreeMenu plugin Seafnox jQuery 9 12.01.2010 21:55
JQuery + FireFox NOOB jQuery 4 02.11.2009 18:16
Как правильно подгрузить jQuery Siton jQuery 4 15.06.2009 09:54