You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

jQuery动态添加邮箱验证消息重复两次,条件判断失效求助

解决jQuery错误提示重复添加的问题

我看了你的代码,出现重复添加错误提示的情况,大概率是这两个原因之一:

  • focusout事件被重复绑定:比如你的脚本被多次执行(比如放在了会重复渲染的组件里,或者脚本标签被加载了两次),导致同一个输入框的focusout事件绑定了多遍,每次触发都会执行一次添加逻辑。
  • next(".validation")的判断局限性:next()只会查找紧邻的下一个兄弟元素,如果输入框后面还有其他元素(比如隐藏的input、span等),那即使已经存在.validation提示框,next(".validation")也会返回空,导致重复添加。

接下来给你两种实用的修正方案:

方案一:确保事件只绑定一次 + 更可靠的元素查找

先用off解绑之前的focusout事件,再绑定新的,避免重复绑定;同时改用siblings查找同级的提示框,解决next的局限性:

// 先解绑再绑定,防止重复绑定事件
$('.refEmail').off('focusout').on('focusout', function() { 
    var reg = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; 
    if ($(this).val() !== "" && !$(this).val().match(reg)) { 
        // 查找所有同级的.validation,判断是否已存在
        if ($(this).siblings(".validation").length === 0) { 
            $(this).after("<div class='validation' style='color:red;margin-bottom: 20px;'>Please enter valid email</div>"); 
        } 
    } else { 
        // 移除所有同级的.validation,确保清理干净
        $(this).siblings(".validation").remove(); 
    } 
}); 

方案二:提前创建提示框,用显示/隐藏代替反复增删

这种方式更高效,避免频繁DOM操作,也从根源上解决重复添加的问题:

// 页面加载时给每个refEmail输入框后面添加隐藏的提示框
$('.refEmail').each(function() {
    $(this).after("<div class='validation' style='color:red;margin-bottom: 20px;display:none;'>Please enter valid email</div>");
});

// 绑定focusout事件,只控制提示框的显示/隐藏
$('.refEmail').on('focusout', function() { 
    var reg = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; 
    var $tip = $(this).next(".validation");
    if ($(this).val() !== "" && !$(this).val().match(reg)) { 
        $tip.show();
    } else { 
        $tip.hide();
    } 
}); 

另外也检查一下你的jQuery脚本是否被重复引入了,比如页面里是否多次加载了<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>,这也可能导致事件重复绑定哦。

内容的提问来源于stack exchange,提问作者user8295448

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:46:33