отправка формы без перезагрузки validator

281
08 июля 2017, 11:07

на сайте использую такой код js:

$(document).ready(function() {
$.validator.addMethod('regexp_login', function(value, element, params) {
    var expression = new RegExp(params);
    return this.optional(element) || expression.test(value);
}, "Логин должен содержать только цифры и латиские буквы!");
$('.form_login').validate({
rules:{
    name:{
        regexp_login:/^[a-zA-Z0-9_-]{3,32}$/
        },
    pass:{
        required:true
        },
      },
messages:{
    pass:{
        required:"Поле обязательны"
        }
    },
    submitHandler: function(form) {
       $(form).ajaxSubmit({
            url:'/index.php?route=action/login',
            type:"post",
            date:{
                'login_form': '',
                'name': name,
                'pass': pass
            },
            dataType: 'html',
            success: function(result){
                $('.text_error_form').html(result);
            },
            error:  function(xhr, str){
                alert('Возникла ошибка: ' + xhr.responseCode);
            }
        });
    }
});
});

htmp:

<form method="post" action="/index.php?route=action/login" class="form_login">
                <div class="form-group"><input type="text" class="form-control" id="name" name='name' placeholder="<?=$data['form_login_text']?>"/></div>
                <div class="form-group"><input type="password" class="form-control" id="pass" name='pass' placeholder="<?=$data['form_pass_text']?>"/></div>
                <input type="submit" class="btn btn-primary"  name="login_form" value="<?=$data['btn_form_login']?>" />
            </form>

php:

if (isset($_POST['login_form'])) {
            if ($this->valid->secureData($_POST)) {
                $login = $_POST['name']; $pass = md5($_POST['pass']);
                $authUser = $this->addUser->AuthUser($login, $pass);
                if($authUser == true and $authUser[0]['activ_status'] == "1") {
                    $_SESSION['user'] = $login;
                    $upd_online_status['online_status'] = time();
                    $this->addUser->UpdOnlineStatus($upd_online_status, $login);
                    header("Location: /index.php?route=profile");
                } else {
                    if ($authUser == true and $authUser[0]['activ_status'] == "0") $data['message'] = $lang['message_activation'];
                    else $data['message'] = $lang['message_error_auth'];
                }
            }
        } else {
            $data['message'] = "";
        }
        echo $data['message'];

собственно все вопросы только к js проверка формы отрабатывает успешно, но отправка не выходит, т.е. страница перезагружается все равно, я использую плагин validator. второй вопрос это как получить значение атрибута, я думал так documentElement.attr('#myFormId'); и последний вопрос как расширить свой метод проверки:

$.validator.addMethod('regexp_login', function(value, element, params) {
    var expression = new RegExp(params);
    return this.optional(element) || expression.test(value);
}, "Логин должен содержать только цифры и латиские буквы!");

чтоб эта ошибка выводилась в указаном месте.

Answer 1

У вас в форме кнопочка типа "submit" имеется. Возможно, из-за неё и происходит перезагрузка. Поменяйте на "button".

READ ALSO
fputcsv как сделать табы?

fputcsv как сделать табы?

Есть массив $arr с текстовыми объектами по типу: "target:value"

213
Добавить задание в cron на php

Добавить задание в cron на php

Нужно каждую минуту выполнять несколько заданий, например загружать фото в диалог вконтактеУ меня есть база данных с логинами:паролями и id группы...

313
Хитрые классы на PHP 5.3 и 7

Хитрые классы на PHP 5.3 и 7

Помогите, пожалуйста, понять,есть ли опечатка в задании из технического собеседования:

157