Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何检查页面上的所有控件是否为空?_Javascript_Jquery - Fatal编程技术网

Javascript 如何检查页面上的所有控件是否为空?

Javascript 如何检查页面上的所有控件是否为空?,javascript,jquery,Javascript,Jquery,我有一个方法,该方法应该循环我页面上的所有控件,如果其中任何一个控件的值不是空字符串/null,则返回false。这将作为OnSaveValidation的一部分调用。如果表单为空,则应该能够保存 function IsFormEmpty() { var ancestor = document.getElementById('PAIQIFunc'); //PAIQIFunc is the id of a div var descendents = ancestor.getElem

我有一个方法,该方法应该循环我页面上的所有控件,如果其中任何一个控件的值不是空字符串/null,则返回false。这将作为OnSaveValidation的一部分调用。如果表单为空,则应该能够保存

function IsFormEmpty()
{
    var ancestor = document.getElementById('PAIQIFunc'); //PAIQIFunc is the id of a div
    var descendents = ancestor.getElementsByTagName('*');

    var i = 0;
    for (i = 0; i < descendents.length; ++i)
    {
        var e = descendents[i];

        try
        {
            var eVal = $("#" + e).val();

            // just check to make sure eVal has *some* value
            if (eVal != '' || eVal != undefined || eVal != null)
                return false;
        }
        catch (err){
            //simply move on to next control...   
        }
    }

    return true;
}

您可以尝试以下方法:

var hasValue = false;
var div = document.getElementById('PAIQIFunc');

$(div).find('input')
    .each(function() { // iterates over all input fields found
        if($.trim($(this).val()).length != 0) {
            hasValue = true; // if field found with content
            break;
        }
    });

if(hasValue === false) {
    // save logic here
}

希望这有帮助

您已经在使用查询了,为什么不直接使用它来选择所有表单元素,并且只选择那些以“$”开头的元素呢PAIQualityIndicatorFunctionalV14输入,PAIQualityIndicatorFunctionalV14选择,PAIQualityIndicatorFunctionalV14您可能还有什么?@CBroe抱歉,我不知道您的意思。一般来说,我对jquery/js还是相当陌生的。我不知道您试图在代码段中显示什么。@sab669-因为您不理解答案,所以不能说明它不是正确的答案。为什么不去阅读jQuery并理解它呢。所以这不是填鸭式API教程。你的评论/问题让这个话题偏离了主题:太宽泛了,因为现在的问题是我不懂jquery,我想让你向我解释基本的东西,因为我太懒了,看不懂说明*@JarrodRoberson我从来没有说过这不是正确的答案,我只是要求详细说明。你是对的;因此,这不是一个填鸭式回答的地方,但一个好的答案也应该解释代码在做什么。我已经环顾了如何在一个元素中找到所有子控件,他的帖子没有给我任何东西可以让我自己去搜索和理解它。我认为@CBroe的第一条评论是建议让jquery来完成繁重的工作。您可以执行类似于var formControls=$'PayQualityIndicatorFunctionalV14输入,'PayQualityIndicatorFunctionalV14选择;然后通过formControls循环检查每个控件的值。干得好。为什么不直接使用$PAIQIFunc,而不是getElementById和$div?谢谢!没有特别的原因,我只是养成了缓存DOM元素以优化性能的习惯,我想这并不是一件特别糟糕的事情。谢谢!在弄明白CBroe在他的评论中的意思和这个之间,我能够弄明白。必须为查找“选择”添加第二个片段,但除此之外,这一切都非常有效!必须为find'select'添加第二个段-您可以在find中使用任何有效的CSS选择器,因此您只需执行以下操作:find'input,select'
var hasValue = false;
var div = document.getElementById('PAIQIFunc');

$(div).find('input')
    .each(function() { // iterates over all input fields found
        if($.trim($(this).val()).length != 0) {
            hasValue = true; // if field found with content
            break;
        }
    });

if(hasValue === false) {
    // save logic here
}