Javascript :可见不';提交事件后不工作
代码 我想在用户提交电子邮件后淡出我的表单。还有下一个问题。我只是无法捕获提交事件,所以我想要的是,如果出现成功消息,那么表单应该被隐藏。我使用的Javascript :可见不';提交事件后不工作,javascript,jquery,Javascript,Jquery,代码 我想在用户提交电子邮件后淡出我的表单。还有下一个问题。我只是无法捕获提交事件,所以我想要的是,如果出现成功消息,那么表单应该被隐藏。我使用的:visible如下: $('#mc-embedded-subscribe-form').submit(function (e) { if($('#mce-success-response').is(':visible')){ $("#mc_embed_signup").hide(); } }); #mce成功响应是成
:visible
如下:
$('#mc-embedded-subscribe-form').submit(function (e) {
if($('#mce-success-response').is(':visible')){
$("#mc_embed_signup").hide();
}
});
#mce成功响应
是成功对话框。
我还尝试:
if( $("#mce-success-response").css('display') == 'block') {
}
但它不起作用。怎么了?是的,我认为
submit
事件只是一种方式,您只需提交,当您喜欢这种方式时,您不想得到响应。也许您可以使用ajax来处理结果。实际上,您只需提交表单,然后淡出表单,我认为。这更多的是一种变通方法,而不是有效的解决方案
但它是有效的
function checkSuccess() {
if ($('#mce-success-response').is(':visible')) {
$("#mc_embed_signup").hide();
}
}
window.setInterval(checkSuccess, 100);
您还可以使用下面的代码为隐藏添加延迟:
function checkSuccess() {
function successAction(){
$("#mc_embed_signup").hide();
}
if ($('#mce-success-response').is(':visible')) {
setTimeout(successAction, 2500);
}
}
window.setInterval(checkSuccess, 100);
一种可能的解决方案是在这种情况下使用自定义事件(因为正如我在注释中解释的,success respone
元素显示在ajax成功处理程序中)
因此,在您的mce\u success\u cb
方法中
if (resp.result == "success") {
$('#mce-' + resp.result + '-response').show();
$('#mce-' + resp.result + '-response').html(resp.msg);
$('#mc-embedded-subscribe-form').each(function () {
this.reset();
});
$("#mc-embedded-subscribe-form").trigger('submitsuccess');
// If the form has errors, display them, inline if possible, or appended to #mce-error-response
} else {
//rest of your code
}
然后
提交后,您是否收到来自AJAX的成功响应?根据您的代码片段,我假设情况就是这样,一旦Ajax请求完成,success boz就会出现。由于它将持续一段时间,您可以尝试下面的代码
function waitForIt(){
if(!$('#mce-success-response').is(':visible')){
setTimeout(waitForIt(),500);
} else{
$("#mc_embed_signup").hide();
}
$('#mc-embedded-subscribe-form').submit(function (e) {
setTimeout(waitForIt(),500);
}
});
或者,如果弹出成功消息的不是AJAX响应,您可以尝试在表单提交和用户操作之间放置一个接口。将输入类型从submit
更改为按钮
,或使用普通的图像
作为按钮,即
。使用单击()
而不是提交()
,检查容器是否可见,如果可见,则隐藏所需的容器并触发提交
希望有帮助我可以使用延迟,但无效的电子邮件被认为是提交,我必须赶上成功。我没有完全的控制权,因为它是MailChimp的句柄。我明白了,你可以使用jQuery验证插件,这样,就有一个验证句柄,我想你可以用这个句柄做你想做的事情,祝你好运!看起来响应的可见性是在成功处理程序执行后设置的问题是在ajax调用后显示mce success response
元素,该调用再次在表单提交(ajax提交)上初始化。。。因此,当您的表单提交处理程序被调用时,mce success response
元素尚未显示。我认为在这种情况下,您需要使用ajax。在这种情况下,一个可能的解决方案是在表单提交处理程序上触发一个自定义事件,并使用该自定义事件来完成任务,而不是使用提交处理程序。问题在于试图在提交事件中隐藏内容。但在发送工作之前会触发submit事件。
function waitForIt(){
if(!$('#mce-success-response').is(':visible')){
setTimeout(waitForIt(),500);
} else{
$("#mc_embed_signup").hide();
}
$('#mc-embedded-subscribe-form').submit(function (e) {
setTimeout(waitForIt(),500);
}
});