Есть форма редактирования в модальном окне.В поле Телефон маска присутствует при наведении на поле. Выводится только первая цифра, 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();
}