Jquery не видит переменную jValid.errors = true; в запросе ajax , если запрос делать асинхронный async: false; то переменную видно но все происходит долго и подлагивает , есть ли другие способы это реализовать без async: false; ? Код (Javascript): 'login' : function() { var patt = /^[A-Za-z0-9]{6,32}$/i; var login = $("#login").val(); if(!patt.test(login)) { jValid.errors = true; $('#message').text("Введите от 6 до 32 символов"); } else { $.ajax({ url: "request.php", type: "GET", data: "login=" + login, cache: false, success: function(response) { if(response == "no") { jValid.errors = true; $('#message').text("Логин уже используется"); } } }); } }
Переменная объявлена в том же файле.... Вот весь файл Код (Javascript): $(document).ready(function() { var jValid = { 'login' : function() { var patt = /^[A-Za-z0-9]{6,32}$/i; var login = $("#login").val(); if(!patt.test(login)) { jValid.errors = true; alert("Введите от 6 до 32 символов"); } else { $.ajax({ url: "request.php", type: "GET", data: "login=" + login, cache: false, success: function(response) { if(response == "no") { jValid.errors = true; //не видит без async: false, alert("Логин уже используется"); } } }); } }, 'sendIt' : function () { if(!jValid.errors) { $.ajax({ url: "request.php", type: 'post', data: $("#form").serialize(), cache: false, success: function(otvet) { $("#login").val(''); if(otvet == "no") { alert("Ошибка! Попробуйте снова"); } else { alert("Успешно!"); } } }); } } }; $('#submit').click(function () { jValid.errors = false; jValid.login(); jValid.sendIt(); return false; }); $('#login').keyup(jValid.login); });
@Khaybulla надо делать отладку, в google chrome есть инструменты разработчика, прямо там можно, https://learn.javascript.ru/debugging-chrome https://developers.google.com/web/tools/chrome-devtools/debug/