Jquery удаленный метод, показывающий, что электронная почта и мобильный телефон уже существуют на странице редактирования без каких-либо изменений - PullRequest
0 голосов
/ 18 января 2019

Я использую CodeIgniter с проверкой jQuery.Я использую remote, чтобы проверить, mobile number и email id уже доступны или отсутствуют в базе данных.Таким образом, нет никакой проблемы, когда пользователь регистрируется.Я получаю сообщение об ошибке на странице редактирования.

На странице редактирования я просто изменяю name и address, но mobile number и email id, которые оба показывают, уже существуют.Я не менял мобильный телефон и электронную почту.Я знаю, что он вызовет контроллер, чтобы проверить, доступны ли мобильные телефоны и электронная почта, или нет, но есть ли другой способ справиться с этой проблемой?

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

Я хочу проверить пользователя по базе данных при создании учетной записи, но НЕ проверять пользователя по базе данных при редактировании учетной записи.

$("#edit_member").validate({
  errorElement: 'div',
  rules: {
    name: {
      required: true,
      alphabets: true,
      minlength: 3
    },
    email: {
      required: true,
      Email: true,
      remote: {
        url: baseUrl + "/AddMember/isEmail",
      }

    },

    phone: {
      required: true,
      number: true,
      minlength: 10,
      maxlength: 10,
      remote: {
        url: baseUrl + "/AddMember/isMobile",
        // async: false 
      }
    },


    address: {
      required: true,
      minlength: 10

    }
  },

  messages: {
    email: {
      remote: "Email already Exists"
    },
    phone: {
      remote: "Mobile no already Exists"
    },
  },

  submitHandler: function(form) {//form.submit();}

});

Контроллер

function isEmail()
    {
        $email = trim($this->input->get('email'));
        $result = $this->addmember_model->isEmail($email);
        if($result)
        {
            echo $msg = "false";            
        }
        else
        {
            echo $msg = "true"; 
        }   
    }

    function isMobile()
    {
        $mobile = trim($this->input->get('phone'));
        $result = $this->addmember_model->isMobile($mobile);
        if($result)
        { 
      echo $msg = "false";  

        }
        else
        {
            echo $msg = "true";
        }   
    }

Модель

function isEmail($email) 
    {
        $result = $this->db->where(['email'=>$email,'is_status'=>1])
                           ->get('members')
                           ->row();
        return $result;
    }

    function isMobile($mobile)
    {
        $result = $this->db->where(['phone'=>$mobile,'is_status'=>1])
                           ->get('members')
                           ->row();
        return $result;
    }

1 Ответ

0 голосов
/ 18 января 2019

Используйте PHP, чтобы определить, является ли страница Редактированием или Созданием, и установите переменную как таковую. Вы можете посмотреть на сегмент URL с помощью класса URI.

<?php
   $create = ($this->uri->segment(3) == "create") ? TRUE : FALSE;
?>

Затем используйте PHP, чтобы написать соответствующие правила для этой конкретной версии View.

$("#edit_member").validate({
    ....
    rules: {
        ....
        email: {
            required: true,
            Email: true,
            <?php if ($create) : ?>
            remote: {
                url: baseUrl + "/AddMember/isEmail",
            }
            <?php endif; ?>
        },
        ....

Вышеуказанное работает только тогда, когда эта часть JavaScript находится в файле View и не включена из внешнего файла JavaScript.

В противном случае, если .validate() является частью файла JavaScript, включенного извне, вы можете использовать вместо него .rules() метод .

После включения JavaScript (после вызова .validate()) программно удалите правило remote.

<?php if ($edit) : ?>
    <script>
        $(document).ready(function() {
            $('[name="email"]').rules('remove', 'remote');
        });
    </script>            
<?php endif; ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...