循环使用特定类的表单元素

时间:2011-05-07 11:13:19

标签: jquery forms jquery-selectors validation this-keyword

实际上我正在验证一个包含text,select,dropdown et-al字段的表单。我有一些强制性的字段,我给了他们一个必需的类(只有textfields)。现在我想循环遍历所有表单元素并检查该元素是否具有所需的类,然后在该字段之后附加*。我已经使用了each()方法,但是我没有按照我想要的方式工作。

我的代码如下所示:

function validate_form() {
    $("#mysubmit").each(function() {
        if($("form :text.required:text").val() == "" )
        {
            $("form :text.required:text").html("*");
            return false;
        }
        return true;
    });
}

其中mysubmit是我提交按钮的ID。

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

3 个答案:

答案 0 :(得分:1)

正如您所说,您希望追加“*”。您试图将插入

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

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;
}

希望这会有所帮助。欢呼声。

答案 1 :(得分:0)

您可以使用.after在所需元素后附加*,如下所示:

$('.required').after('<span>*</span>');

要迭代所有必填字段,您可以这样做:

$(.required).each(function(){
    //do something with this
    //inside this function 'this' is in turn each of the selected elements
    alert($(this).val());
});

jQuery.each遍历应用它的选择中的所有元素。在你的情况下$("#mysubmit")只是一个元素(我假设提交按钮)。没有必要 以下是您的代码的重写版本:

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

注意:

  • 不需要$("#mysubmit").each,因为您的函数中的逻辑不依赖于提交按钮
  • 像您尝试的那样从.each函数返回值并不像您期望的那样工作。如果您从false函数返回.each,则只会停止迭代。
  • $(“form:text.required:text”)将匹配具有类.required所有文本字段,而不仅仅是一个,正如您所期望的那样。

答案 2 :(得分:0)

这是我如何在没有

的情况下解决我的问题 在if语句中删除警告并且.append * :)认为它应该工作

https://stackoverflow.com/a/40891000/5185974