【问题标题】:Using .after jQuery to add a msg only once使用 .after jQuery 只添加一次味精
【发布时间】:2021-08-12 14:37:52
【问题描述】:

当输入到我的电子邮件表单字段中的电子邮件值未通过我的正则表达式测试时,我一直在尝试向 DOM 元素添加一个类。它会根据需要在我的字段下方添加我的消息,但会多次执行,堆叠多个消息。下面的代码就是这样做的:

if(emailFault==true){
            //error exists
            $("#email").addClass("error");
            $( "#email" ).after( "<span>" + msgEmail + "</span>" );
            //alert(msg);
            event.preventDefault();
        }

这是我尝试使用但完全破坏了我的表单的一些代码,但应该有助于了解我正在尝试做什么:

if(emailFault==true) && (!$("#email").hasClass("error")){
            //error exists
            $("#email").addClass("error");
            $( "#email" ).after( "<span>" + msgEmail + "</span>" );
            //alert(msg);
            event.preventDefault();
        }

【问题讨论】:

  • 您的if 语法不正确。您不需要第二个 if 关键字。 if (emailFault &amp;&amp; !$("#email").hasClass("error")) {
  • @RoryMcCrossan 谢谢,对 js 非常陌生,非常感谢您的帮助。做出了改变,但它仍然破坏了我的验证,所以我会继续玩它,干杯。
  • 您已通过编辑删除了第二个 if,但现在括号不正确。不要在 &amp;&amp; 之前关闭括号然后再次打开 - if 之后的整个检查/子句需要在括号中(你可以在里面有额外的括号)。 if (...complete clause...) {
  • 语句的工作方式,如果您删除了&amp;&amp;,您的原始代码将可以工作-它将是一个if,通过所以检查第二个if if(emailFault==true) if (!$("#email").hasClass("error")){ } 是等效的if(emailFault==true) { if (!$("#email").hasClass("error")){ } } (在评论中使用适当的换行符看起来更好)。但在if 括号内使用&amp;&amp; 仍然可以更清楚。
  • @freedomn-m 感谢您的澄清,不胜感激。刚开始使用 js 并在语法上苦苦挣扎,期待它成为第二天性的那一天!哈哈哈

标签: javascript jquery web


【解决方案1】:

&amp;&amp; 在两个 if 语句之间对我来说似乎是个问题。试试

if(emailFault==true && !$("#email").hasClass("error")) {

        //error exists
        $("#email").addClass("error");
        $( "#email" ).after( "<span>" + msgEmail + "</span>" );
        //alert(msg);
        event.preventDefault();
        
}

【讨论】:

  • 谢谢!删除了 if 但语法仍然不正确,因为我在 true 之后有括号,注意到从您共享的代码中,干杯
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多