javascript - 递归验证 HTML 输入元素

标签 javascript jquery html recursion

我编写了以下递归输入验证器,它适用于我。有没有更好的方法来访问每个 dom 元素并检查它是否是输入字段并验证它?

function formValidator(parent)
{
    //base case no children
    if( parent.children().length == 0)
        return

    //recurse through each childs' child
    parent.children().each(function(){
        formValidator($(this));

    /**
    * Work : check if this node is an input node
    */
        if($(this).is("input"))
        {
            var type = $(this).attr('type');

            if(type =="text")
              //do work bro

        }

   });//end for each

}

最佳答案

如果更好是指更简洁,那么这在功能上是等价的

parent.find('*').each(function(){
    /**
    * Work : check if this node is an input node
    */
        if($(this).is("input"))
        {
            var type = $(this).attr('type');

            if(type =="text")
              //do work bro

        }

   });//end for each

注意这里不需要递归,因为

parent.find('*')

使用 *(all-selector) .这将获取所有子项和嵌套子项。

更新

为了提高性能,你可以将上面的代码重构为

parent.find('input[type="text"]').each(function(){
        var type = $(this).attr('type');

                //if(type =="text")
                  //above no longer needed
       });//end for each

这将获取所有嵌套的 input 元素,因此您甚至不必检查

if($(this).is("input"))

关于javascript - 递归验证 HTML 输入元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30359704/

相关文章:

javascript - 运行 AJAX 调用的 javascript 代码

javascript - 连接 .map() 值

javascript - 如何在 JQuery 中选择窗体的父 div?

javascript - 如何获取动态创建的 HTML 元素的值?

javascript - 在这个 JavaScript 函数中显示淡入效果?

javascript - 通过 For 循环选择和添加函数到 Div

html - 创建全屏 iframe - 左侧有空间用于导航

javascript - 将特定字符串解析为对象

javascript - 如何使我的左侧菜单栏在单击时显示和隐藏更改图标

html - 第一个输入的 CSS 选择器