Javascript.RU

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

Непонятная ошибка в скрипте
Всем привет.

У меня есть сервер, который возвращает ответ в формате JSON в случае неудачной авторизации/регистрации пользователя или производит редирект, для это я нашел уже готовый скрипт (работает для одной формы):

$(function () {
    $('#login').unbind('submit');

    $('#login')
        .attr('action', '/members/login')
        .bind('submit', function () {
            var form = this;
            if ($("#login").valid()) {
                $.post($(form).attr('action'), $(form).serialize(), function (data) {
                    if (data.errors) {
                        makePopup(data.errors, 'error', 'Ошибка входа');
                    } else {
                        document.location = data.redirect;
                    }
                });
            }

            return false;
        });
});


И он правда работает, вот только решил я его немного изменить, для того чтобы он работал сразу с несколькими формами:

authorization.js
function verifyForm(id, url) {
    $(id).unbind('submit');

    $(id)
        .attr('action', url)
        .bind('submit', function () {
            var form = this;
            if ($(id).valid()) {
                $.post($(form).attr('action'), $(form).serialize(), function (data) {
                    if (data.error) {
                        alert(data.error);
                    } else {
                        document.location = data.redirect;
                    }
                });
            }

            return false;
        });
}


Затем подключаю в <head></head>

<script type="text/javascript" src="/scripts/jquery-1.9.1.js"></script>
    <script type="text/javascript" src="/scripts/jquery.validate.js"</script>
    <script type="text/javascript" src="/scripts/bootstrap.min.js"></script>
    <script type="text/javascript" src="/scripts/authorization.js"></script>

    <!-- Вызываем методы в скрипте-->
    <script type="text/javascript">verifyForm('#login', '/member/login');</script>
    <script type="text/javascript">verifyForm('#reg', '/member/register');</script>



Ну и соответственно две формы:
<form action="/" class="form-inline" id="login" method="post">
...
<form action="/" class="form-horizontal" id="reg" method="post">


А теперь собственно сама проблема, после небольшого рефакторинга скрипт не хочет работать в консоли отладки Firefox особо ничего нет, кроме "элемент не найден" (но вот что за элемент остается тайной). Интересно почему? Честно говоря JS только начал изучать

Последний раз редактировалось bbster, 05.08.2015 в 17:28.
Ответить с цитированием
  #2 (permalink)  
Старый 05.08.2015, 18:10
Аватар для EmperioAf
Профессор
Отправить личное сообщение для EmperioAf Посмотреть профиль Найти все сообщения от EmperioAf
 
Регистрация: 15.01.2015
Сообщений: 622

попробуйте подключить этот же скрипт не в head, а перед закрывающимся тегом </body>
Ответить с цитированием
  #3 (permalink)  
Старый 05.08.2015, 19:22
Новичок на форуме
Отправить личное сообщение для bbster Посмотреть профиль Найти все сообщения от bbster
 
Регистрация: 05.08.2015
Сообщений: 2

Сообщение от EmperioAf Посмотреть сообщение
попробуйте подключить этот же скрипт не в head, а перед закрывающимся тегом </body>
Спасибо, работает.
Только вот немного неудобно в конце файла держать. Насколько я понял, проблема в том что элементы не успевают отрендериться? Можно ли в таком случае заюзать document.ready?

Такой код не работает почему то

<script type="text/javascript">$( document ).ready(verifyForm('#login', '/member/signin'))</script>
<script type="text/javascript">$( document ).ready(verifyForm('#reg', '/member/signup'))</script>
Ответить с цитированием
  #4 (permalink)  
Старый 05.08.2015, 21:36
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

bbster,
Потому что без .ready в конце страницы не работает..
Можно просто вставить произвольный текст и спрашивать "А почему не работает ?"
Отделите и выложите код без .ready
Ксать http://jquery-docs.ru/Events/ready/
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ребята помогите какая ошибка в скрипте php? xddanik Серверные языки и технологии 2 25.04.2015 21:44
Ошибка в скрипте nicrolay Общие вопросы Javascript 8 07.06.2014 23:46
ошибка script5022: InvalidCharachterError в скрипте для IE10 (серый экран) vitaliyna Общие вопросы Javascript 8 17.03.2014 17:42
Непонятная ошибка yuri-it jQuery 0 10.06.2011 10:34
Непонятная ошибка в IE6 Servest Internet Explorer 14 10.10.2010 13:19