Непонятная ошибка в скрипте
Всем привет.
У меня есть сервер, который возвращает ответ в формате 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"> А теперь собственно сама проблема, после небольшого рефакторинга скрипт не хочет работать :lol: в консоли отладки Firefox особо ничего нет, кроме "элемент не найден" (но вот что за элемент остается тайной). Интересно почему? Честно говоря JS только начал изучать :thanks: |
попробуйте подключить этот же скрипт не в 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> |
bbster,
Потому что без .ready в конце страницы не работает.. Можно просто вставить произвольный текст и спрашивать "А почему не работает ?" Отделите и выложите код без .ready Ксать http://jquery-docs.ru/Events/ready/ |
Часовой пояс GMT +3, время: 02:54. |