javascript - 返回 false 不会停止表单提交

标签 javascript php jquery forms

我正在尝试提交一个验证表单,然后用 PHP 登录用户。当出现错误时我返回 false,但它不会阻止表单提交。如何防止表单仅在出现错误时才提交?我在底部放置了一个 return false ,但这会阻止整个表单提交,即使登录正常。

登录.js

$('#login_form').submit(function(e) {
if (validate({required: "email, password"}) == true) {
    return attemptLogin();
} else {
    return false;
}
});

function attemptLogin() {
var email = $("#email").val();
var password = $("#password").val();
var json = "JSON";
$.ajax({
    url: "/login",
    type: "POST",
    data: {
        email: email,
        password: password,
        json: json
    },
    success: function (data) {
        data = JSON.parse(data);
        if (data['message'] != 'undefined') {
            if (data['message'] != 'success') {
                $('#errors').html(data['message']);
                return false;
            }
        }
    }
});

}

和我的 PHP

if ($validation === true) {
        $user->findByEmail($_POST['email'], array('first_name', 'password', 'id'));
        if (!$user->login($_POST['password'], $user->password, $user->id)) {
            if (isset($_POST['json'])) {
                echo json_encode(array('message' => 'Invalid email or password.'));
                die;
            } else {
                $redirect->to('/login', '<div class="message message-error">Invalid email or password.</div>');
            }
        } else {
            echo json_encode(array('message' => 'success'));
            //die;
            $redirect->to('/home', '<div class="message message-success">Hi ' . $user->first_name . ', you have been logged in!</div>');
        }

最佳答案

您可以使用e.preventDefault() - 它将阻止任何默认浏览器事件;

$('#login_form').submit(function(e) {

  e.preventDefault();

  if (validate({required: "email, password"}) == true) attemptLogin();
});

关于javascript - 返回 false 不会停止表单提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28045719/

相关文章:

javascript - 广告横幅在浏览器 session 中只显示一次

javascript - JW Player 6 寻找和暂停

javascript - Highcharts - 大 TreeMap : Show values below points name

javascript - 更改 Highcharts 工具提示值

php - password_hash 仍然散列并存储一个 undefined variable

jquery - 显示每个中继器项目的值

jquery - 大多数人使用的 "standard"JQuery TreeView 是什么?似乎不再支持最受欢迎的插件了?

javascript - 单选按钮/复选框未使用 AJAX 输入 MySQL DB

php - 使用 Laravel Fluent 有没有办法检索更新或插入的行?

php - 在 codeigniter 中发现数据库中有重复数据后显示提示