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

时间:2016-06-09 18:43:37

标签: javascript jquery

我有一个假设的方法循环遍历我页面上的所有控件,如果其中任何一个控件的值不是空字符串/ 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 eVal = $("#" + e).val();会引发异常,因为它是div或类似的东西。我只对我的表单中的108个下拉菜单和1个文本框感兴趣。

我在if语句中设置了一个断点,它从未被击中过。但是descendents有1200个元素;我无法一步一步地试图找到我正在寻找的东西......

我还能如何修改代码以检查页面上的每个控件?

编辑:我应该注意,Web应用程序是使用Razor视图的C#/ ASP.NET项目,我们使用的是Telerik的Kendo Web UI控件,而不是&# 34;香草&#34; .NET控制是否有所作为。因此,所有控件都在.cshtml文件中定义,如下所示:

@(Html.Kendo().DropDownListFor(m => m.SomeProperty).HtmlAttributes(new { id = "cmbSomeProperty", @class = "k-dropdown-width-30", @tabIndex = "1", style = "width:60px" }).BindTo(ViewBag.SomePropertyDataSource).OptionLabel(" "))

1 个答案:

答案 0 :(得分:2)

您可以尝试以下方法:

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
}

希望这会有所帮助。