event.preventDefault();仅在某些时候使用提交表单

event.preventDefault(); only works some of the time with submit form

本文关键字:候使用 提交 表单 preventDefault event      更新时间:2023-09-26

我正在使用Mailchimp API提交表单。目标是防止 Mailchimp 提供的默认回调。大多数时候,event.preventDefault()的行为是应有的。然后随机它将不起作用:

$(function () {
 var $form = $('#mc-embedded-subscribe-form');
 $('#mc-embedded-subscribe').on('click', function(event) {
     if(event) event.preventDefault();
    register($form);
   });
});
function register($form) {
    $.ajax({
        type: $form.attr('method'),
        url: $form.attr('action'),
        data: $form.serialize(),
        cache       : false,
        dataType    : 'json',
        contentType: "application/json; charset=utf-8",
        error       : function(err) { alert("Could not connect to the registration server. Please try again later."); },
        success     : function(data) {
        if (data.result != "success") {
            // Something went wrong, do something to notify the user. maybe alert(data.msg);
            var message = data.msg
            var messageSh = data.msg.substring(4);
            if (data.msg == '0 - Please enter a value' || data.msg == '0 - An email address must contain a single @') {
               $('#notification_container').html('<span class="alert">'+messageSh+'</span>'); 
            } else {
                $('#notification_container').html('<span class="alert">'+message+'</span>');
            }
        } else {
            // It worked, carry on...
        var message = data.msg;
        $('.popup-promo-container').addClass('thanks');
        $('.checkboxes, #mc_embed_signup_scroll').addClass('hidden');
        $('.complete-promo').html(message).removeClass('hidden');
        setTimeout(function() {
            document.querySelector('.popup-promo').style.display = "none";
        },20000);
        
        }
    }
});
}

尝试

  1. 起飞准备功能。
  2. 如果事件打开则删除

法典:

var $form = $('#mc-embedded-subscribe-form');
$('#mc-embedded-subscribe').on('click', function(event) {
    event.preventDefault();
    register($form);
});