Только одно из трёх условий проходит валидацю

93
13 февраля 2018, 10:00

Суть в том, чтобы при заполнении поля выводилось сообщение: всё ок, заполните поле, занято.

Ничего не работает, кроме "заполните" поле. При вводе какого-либо значения - не удаляется класс у span и не добавляется/изменяется у класса input (к примеру, login)

Помогите найти ошибку.

Функция:

function check(inputID) {
            $(inputID).focus(function() {
                $(inputID).removeClass().next().empty();
            });
            $(inputID).blur(function() {
                var data = $(inputID).val();
                var name = $(inputID).attr('name');
                if (data !== '') {
                    $.ajax({
                        url: 'check.php', 
                        type: 'POST', 
                        data: {data: data, check: name},
                        success: function(result) {
                            if(result === 'yes'){
                                $(inputID).removeClass().addClass('ok').next().text('Всё ок').removeClass().addClass('ok');
                            }else if (result === 'no'){
                                $(inputID).removeClass().addClass('error').next().text('занят!').removeClass().addClass('error');
                            }
                        },
                        error: function() {
                            $(inputID).next().text('Произошла ошибка!'); 
                        }
                    });
                } else {
                    $(inputID).removeClass().addClass('empty').next().text('Заполните поле').removeClass().addClass('error'); 
                }
            });
        }
        $(document).ready(function() {
            check("#login");
            check("#email");
        });

<form>
    <label for="login">Логин:</label>
      <input type="text" name="login" id="login"><span></span>
    <br>
    <label for="pass">Пароль:
        <input type="password" name="pass" id="pass">
    </label>
    <br>
      <label for="email">Почта:
          <input type="text" name="email" id="email"><span></span>
      </label>
    <br>
  </form>
Answer 1

В check.php было лишнее условие: в том коде, что выше написал - всё верно прописано. В check.php необходимо прописать следующий код:

$link = mysqli_connect('localhost','root','','onlineForm')
or die('ERROR! No connect to DataBase');

if($_POST['check'] == 'login'){
  $login = mysqli_real_escape_string($link,trim($_POST['data']));
  $query = "SELECT login FROM users WHERE login='$login' LIMIT 1";
  $result = mysqli_query($link,$query) or die (mysqli_error($link));
  if(mysqli_num_rows($result)){
    echo 'no';
  }else{
    echo 'yes';
  }
}
if($_POST['check'] == 'email'){
  $login = mysqli_real_escape_string($link,trim($_POST['data']));
  $query = "SELECT email FROM users WHERE email='$email' LIMIT 1";
  $result = mysqli_query($link,$query) or die (mysqli_error($link));
  if(mysqli_num_rows($result)){
    echo 'no';
  }else{
    echo 'yes';
  }
}

и тогда всё будет работать.

READ ALSO
Babel это ещу актуально или нет?

Babel это ещу актуально или нет?

ЗдравствуйтеНачинаю изучать JavaScript, написал код с использованием ECMAScript 2015

109
Как переопределить скрипт?

Как переопределить скрипт?

Привет есть скрипт отправки формы

79
Как правильно вывести данные с помощью document.getElementById?

Как правильно вывести данные с помощью document.getElementById?

Есть простая задачка, в поле человек вводит число, ему должно вывести степень этого числа с 2 по 4Изначально вывод информации был реализован...

83