X-core
@X-core
начинающий веб разработчик

Как можно вывести значения инпут используя маску?

Есть форма редактирования в модальном окне.В поле Телефон маска присутствует при наведении на поле. Выводится только первая цифра, 3, из поля Телефон,остальные игнорируются.
Форма обрабатываетсAjax
Использую код для маски с файла jquery.maskedinput.min.js
И если можно, подсказать почему добавляются поля,которые не должны добавляться, т.к. содержат ошибку ввода?
Файл html:
<div class="modal" id="modal-1">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <button class="close" type="button" data-dismiss="modal">
                    <i class="fa fa-close"><strong>x</strong></i>
                </button>

                <div class="modal-4"> Редактирование данных</div>

            </div>
        <div class="modal-body">
                <form action="" method="post" id="modForm" role="form">
                    <div class="form-group">
                        <label for="name">Имя<span class="error">*</span></label>
                        <input type="text" name="name" class="form-control" id="name" placeholder="Введите имя" value="{$name}"/>
                        <p class="help-block">Например: John</p>
                    </div>

                    <div class="form-group">
                        <label for="password">Пароль<span class="error">*</span></label>
                        <input type="password" name="password" class="form-control" id="password1"  placeholder="Введите пароль" value="{$password}"/>
                        <p class="help-block">Не меньше шести символов </p>
                    </div>
 <div class="form-group">
                        <label for="phone">Телефон</label>

                        <input type="text"   name="phone" class="form-control" id="phone" placeholder="Введите ваш телефон" value="{$phone}"/>


                    </div>
                    <div class="form-group">
                        <label for="address">Адрес</label>
                        <input type="text" name="address" class="form-control" id="address" placeholder="Введите адрес" value="{$address}"/>
                    </div>
                    <input type="submit" name="submit" onclick="updateUserData();" class="btn btn-default" value="Сохранить"/>
                </form>

            </div>

            <div class="modal-footer">
                <button class="btn btn-danger" type="button" data-dismiss="modal">Отмена</button>

            </div>

        </div>
    </div>

</div>


Файл js:
$(document).ready(function() {
    $("#phone").mask("+3(999) 999-9999");
  
});
function updateUserData() {
 console.log('js-updateUserData()');

     var name    = $('#name').val();
     var password    = $('#password').val();
     var phone   = $('#phone').val();
     var address = $('#address').val();

      var postData = {name: name,
                      password: password,
                      phone: phone,
                      address : address
    };

     $.ajax({
         type:'POST',
        async: true,
         url: '/cabinet/index',
        data: postData,
        dataType: 'json',
         success: function(data) {
            if(data['success']) {
                // $('#userLink').html(data['userName']);
                alert(data['message']);
             }else{
                 alert(data['message']);
            }
          }
      });
 }

controller:
class CabinetController
{

    /**
     * Action для страницы "Кабинет пользователя"
     */
    public function actionIndex()
    {
        // Получаем идентификатор пользователя из сессии
        $userId = User::checkLogged();

        //> Получаем информацию о пользователе из БД
        $user = User::getUserById($userId);
        //<

        $smarty = new Smarty();
        //>инициализация переменных
        // Заполняем переменные для полей формы
        //>инициализация переменных
        $resData = array();
        $name = $user['name'];
        $email = $user['email'];
        $password = $user['password'];
        $phone = $user['phone'];
        $address = $user['address'];

        // Флаг результата
        $result = false;

        // Обработка формы
        if (isset($_POST['submit'])) {
            // Если форма отправлена
            // Получаем данные из формы редактирования
            $name = $_POST['name'];
           // $email = $_POST['email'];
            $password = $_POST['password'];
            $phone = clearInt($_POST['phone']);
            $address = $_POST['address'];

            // Флаг ошибок
            $errors = false;

            // Валидируем значения
            if (!User::checkName($name)) {
                $errors[] = 'Имя не должно быть короче 2-х символов';
            }
            if (!User::checkPassword($password)) {
                $errors[] = 'Пароль не должен быть короче 6-ти символов';
            }
          

            if ($errors == false) {
                // Если ошибок нет, сохраняет изменения профиля
                $result = User::edit($userId, $name, $password, $phone, $address);

                $resData['success'] = 1;
                $resData['message'] = 'Данные сохранены!';

           }else{
                $resData['success'] = 0;
                $resData['message'] = 'Ошибка сохранения данных!';

            }

            $smarty->assign('errors', $errors);


        }
}


Файл vodule:

public static function edit($id, $name, $password, $phone, $address)
    {
        // Соединение с БД
        $db = Db::getConnection();

        // Текст запроса к БД
        $sql = "UPDATE users 
            SET name = :name, password = :password, phone = :phone, address = :address 
            WHERE id = :id";

        // Получение и возврат результатов. Используется подготовленный запрос
        $result = $db->prepare($sql);
        $result->bindParam(':id', $id, PDO::PARAM_INT);
        $result->bindParam(':name', $name, PDO::PARAM_STR);
        $result->bindParam(':password', $password, PDO::PARAM_STR);
        $result->bindParam(':phone', $phone, PDO::PARAM_STR);
        $result->bindParam(':address', $address, PDO::PARAM_STR);
        return $result->execute();
    }
  • Вопрос задан
  • 553 просмотра
Пригласить эксперта
Ответы на вопрос 1
devspec
@devspec
Помогло? Отметь решением
maskedinput для телефонов не очень хорошо подходит
лучше intl-tel-input
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы