Jquery 使用Specefic类循环表单元素

Jquery 使用Specefic类循环表单元素,jquery,forms,jquery-selectors,validation,this-keyword,Jquery,Forms,Jquery Selectors,Validation,This Keyword,实际上,我正在验证一个包含文本、选择、下拉等字段的表单。我有一些必填字段,我给了它们一个类requiredonly textfields。现在我想循环遍历所有表单元素,检查该元素是否有必需的类,然后在该字段后面附加一个*。我已经使用了每种方法,但我没有让它完全按照我想要的方式工作 我的代码如下所示: function validate_form() { $("#mysubmit").each(function() { if($("form :text.required:t

实际上,我正在验证一个包含文本、选择、下拉等字段的表单。我有一些必填字段,我给了它们一个类requiredonly textfields。现在我想循环遍历所有表单元素,检查该元素是否有必需的类,然后在该字段后面附加一个*。我已经使用了每种方法,但我没有让它完全按照我想要的方式工作

我的代码如下所示:

function validate_form() {
    $("#mysubmit").each(function() {
        if($("form :text.required:text").val() == "" )
        {
            $("form :text.required:text").html("*");
            return false;
        }
        return true;
    });
}
function validate_form() {
    var valid = true;
    $('form .required:text').each(function(){
       var $spanVal = $(this).next(); //Try to get the validation message (who has '*')
       if ($(this).val()!="" && $spanVal.is("span.validation")){ //If text has value
           $spanVal.remove(); //remove the asterisk
       }else if($(this).val()==""){ //If text is empty           
           if(!$spanVal.is("span.validation")){ //Create a validation message if it doesn't exist
              $('<span class="validation">*</span>').insertAfter(this);
           }
           valid = false;
       } 
    });
    return valid;
}
其中mysubmit是我的提交按钮的id

我想逐一遍历DOM元素。任何人都可以帮助我如何验证此表单。 谢谢

您可以使用它在所需元素后添加*如下:

$('.required').after('<span>*</span>');
迭代应用它的选择中的所有元素。在您的例子中,$mysubmit只是我假设的提交按钮的一个元素。没有必要。 以下是您的代码的重写版本:

function validate_form() {
    var valid = true;
    $('form .required').each(function(){
       if ($(this).val()==''){
         $(this).after('<span>*</span>');
         valid = false;
       }
    });
    return valid;
}
注:

不需要$mysubmit.each,因为函数中的逻辑不依赖于submit按钮 像您尝试过的那样从函数返回值并不能像您期望的那样工作。如果从.each函数返回false,它将停止迭代。 $form:text.required:text将匹配包含该类的所有文本字段。required,而不是您所期望的一个文本字段。 您可以使用在所需元素后附加*,如下所示:

$('.required').after('<span>*</span>');
迭代应用它的选择中的所有元素。在您的例子中,$mysubmit只是我假设的提交按钮的一个元素。没有必要。 以下是您的代码的重写版本:

function validate_form() {
    var valid = true;
    $('form .required').each(function(){
       if ($(this).val()==''){
         $(this).after('<span>*</span>');
         valid = false;
       }
    });
    return valid;
}
注:

不需要$mysubmit.each,因为函数中的逻辑不依赖于submit按钮 像您尝试过的那样从函数返回值并不能像您期望的那样工作。如果从.each函数返回false,它将停止迭代。 $form:text.required:text将匹配包含该类的所有文本字段。required,而不是您所期望的一个文本字段。 正如您所说的,您希望附加“*”。你想把它插进去

我们将使用class=validation创建一个span,如下所示:

function validate_form() {
    $("#mysubmit").each(function() {
        if($("form :text.required:text").val() == "" )
        {
            $("form :text.required:text").html("*");
            return false;
        }
        return true;
    });
}
function validate_form() {
    var valid = true;
    $('form .required:text').each(function(){
       var $spanVal = $(this).next(); //Try to get the validation message (who has '*')
       if ($(this).val()!="" && $spanVal.is("span.validation")){ //If text has value
           $spanVal.remove(); //remove the asterisk
       }else if($(this).val()==""){ //If text is empty           
           if(!$spanVal.is("span.validation")){ //Create a validation message if it doesn't exist
              $('<span class="validation">*</span>').insertAfter(this);
           }
           valid = false;
       } 
    });
    return valid;
}
希望这有帮助。干杯。

正如您所说,您想在“*”后面加上。你想把它插进去

我们将使用class=validation创建一个span,如下所示:

function validate_form() {
    $("#mysubmit").each(function() {
        if($("form :text.required:text").val() == "" )
        {
            $("form :text.required:text").html("*");
            return false;
        }
        return true;
    });
}
function validate_form() {
    var valid = true;
    $('form .required:text').each(function(){
       var $spanVal = $(this).next(); //Try to get the validation message (who has '*')
       if ($(this).val()!="" && $spanVal.is("span.validation")){ //If text has value
           $spanVal.remove(); //remove the asterisk
       }else if($(this).val()==""){ //If text is empty           
           if(!$spanVal.is("span.validation")){ //Create a validation message if it doesn't exist
              $('<span class="validation">*</span>').insertAfter(this);
           }
           valid = false;
       } 
    });
    return valid;
}

希望这有帮助。干杯。

这就是我如何解决我的问题而没有

在if语句中,删除警报并追加*:think it should work


这就是我解决问题的方式

在if语句中,删除警报并追加*:think it should work


我添加了一点来验证空白,但它不验证空白。这里我错在哪里:如果$this.val==| |$this.val.replace/\s/g,.length==0,谢谢你的回答,我添加了一点来验证空白,但它不会验证空白。我错在哪里:如果$this.val==| |$this.val.replace/\s/g,.length==0并感谢您的回答,我们始终欢迎您链接到一个潜在的解决方案,但请让您的其他用户了解它是什么以及为什么存在。始终引用重要链接中最相关的部分,以防无法访问目标站点或永久脱机。考虑到仅仅是一个指向外部站点的链接是一个可能的原因。一个指向潜在解决方案的链接总是受欢迎的,但是请让您的其他用户知道它是什么以及为什么存在。始终引用重要链接中最相关的部分,以防无法访问目标站点或永久脱机。考虑到仅仅是一个指向外部站点的链接是一个可能的原因。