Javascript jQuery正在删除验证时生成的错误并停止重复

Javascript jQuery正在删除验证时生成的错误并停止重复,javascript,jquery,Javascript,Jquery,对JS还是有点陌生,对我正在编写的一些验证脚本有点执着。错误会重复出现,因此如果存在,则需要删除,如果有效,则也需要删除。。有什么想法吗 函数validateEmail($email){ var emailReg=/^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/; 返回emailReg.test($email); } 函数输入集(元素){ if(element.hasClass('error')){ 元素。removeClass(“错误”); 元素。同级('.erro

对JS还是有点陌生,对我正在编写的一些验证脚本有点执着。错误会重复出现,因此如果存在,则需要删除,如果有效,则也需要删除。。有什么想法吗

函数validateEmail($email){
var emailReg=/^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
返回emailReg.test($email);
}
函数输入集(元素){
if(element.hasClass('error')){
元素。removeClass(“错误”);
元素。同级('.error message').remove();
}
}
//验证
$('.validate form')。在('click',函数(事件){
event.preventDefault();
var valid=true,
信息=“”;
$('form.validate input')。每个(函数(){
var$this=$(this);
输入数据集(本美元);
如果($this.prop('required')){
//检查错误,如果发现,让我们获取输出消息
如果(!$this.val()){
$(this.addClass(“错误”);
var inputName=$this.attr('name');
message=$this.data('error-message');
}
//验证电子邮件输入
if($(this).hasClass('validate-email')){
var emailAddress=$this.val();
如果(!validateEmail(emailAddress)){
$this.addClass(“错误”);
有效=错误;
}
}
$('.error message[data input name=“'+inputName+''“]”错误消息)。删除();
//如果未验证,则显示错误
如果(!有效){
//警报(信息);
$this.after(“”+消息+“”);
}
}
});
如果(有效){
$(“.validate form”).submit();
}
});

感谢您的注册

名字: 姓氏: 电邮: 注册
据我所知,您缺少
validateEmail()
函数的定义。异常的自我解释显示它未捕获引用错误:validateEmail未定义

据我所知,您缺少
validateEmail()
函数的定义。异常的自我解释显示它未捕获引用错误:未定义validateEmail

您可以在函数开头添加以下行:

$('.validate-form').on('click', function(event) {
  event.preventDefault();

  var valid = true,
  message = '';

  // Add this
  $(".error").removeClass(".error");
  $(".error-message").remove();

  ...

这将删除上次执行此方法期间在DOM中所做的所有更改。

您可以在函数开头添加以下行:

$('.validate-form').on('click', function(event) {
  event.preventDefault();

  var valid = true,
  message = '';

  // Add this
  $(".error").removeClass(".error");
  $(".error-message").remove();

  ...

这将删除上次执行此方法期间在DOM中所做的所有更改。

对我来说,最简单的方法是在错误消息中添加一个数据属性,例如数据输入名称,并将其设置为inputName变量,因此每次验证字段时,如果验证仍然失败,请首先删除错误消息,然后再次添加它,如下所示:

(仅相关部分)

//删除错误消息(如果存在)
$('.error message[data input name=“'+inputName+''“]”错误消息)。删除();
//如果未验证,则显示错误
如果(!有效){
$this.after(“”+消息+“”);
};

希望这能有所帮助。

对我来说,最简单的方法是在错误消息中添加一个数据属性,例如数据输入名称,并将其设置为inputName变量,因此每次验证字段时,都会先删除错误消息,然后在验证仍然失败时再次添加它,如下所示:

(仅相关部分)

//删除错误消息(如果存在)
$('.error message[data input name=“'+inputName+''“]”错误消息)。删除();
//如果未验证,则显示错误
如果(!有效){
$this.after(“”+消息+“”);
};

希望这有帮助。

首先,我将删除elsevalid=true部分代码,否则如果最后选中的字段有效,表单将提交

您可能只需要一个函数来重置输入。将此函数置于单击事件之外,然后添加inputReset($this)位于每个函数的顶部

function inputReset(element) {
    if (element.hasClass('error')) {
        element.removeClass("error");
        element.siblings('.error-message').remove();
    }
}

有道理吗?希望有帮助。

首先,我要删除elsevalid=true部分代码,否则如果最后选中的字段有效,表单将提交

您可能只需要一个函数来重置输入。将此函数置于单击事件之外,然后添加inputReset($this)位于每个函数的顶部

function inputReset(element) {
    if (element.hasClass('error')) {
        element.removeClass("error");
        element.siblings('.error-message').remove();
    }
}

有道理吗?希望有帮助。

这不是他们的问题。他们哀叹自己生成的错误消息不断被追加,而不是被替换。这不是他们的问题。他们正在为自己生成的错误消息不断被追加而不是被替换而感到惋惜。完成这个技巧后,删除错误消息的最佳方法是什么。。。。当你现在提交几次时,它不会复制它,但是即使输入validIts很酷,removeClass和remove也会保留错误,下面提到的家伙也会帮助你。感谢guysDone的诀窍,但是删除错误消息的最佳方法是什么。。。。当你现在提交几次时,它不会复制它,但是即使输入validIts很酷,removeClass和remove也会保留错误,下面提到的家伙也会帮助你。感谢guysIll试一试,因为它仍在提交一个必填字段,请给我一分钟。我更新了演示,提交了所有错误,然后输入电子邮件并再次提交,但错误显示?您仍然需要valid=false;在您的第一次验证检查中,如果(!$this.val())出于某种原因允许我只需输入电子邮件即可提交,有什么想法吗?我想我已经用它更新了源代码。。。你介意帮我查一下吗:)我试试看,因为它提交了一个必填字段,请给我一分钟的upda