如何在ASP.net页面中使用javascript获取页面中的所有控件

时间:2008-10-09 12:36:12

标签: asp.net javascript

我有一个带有标签控件的页面,每个控件有近15个控件。在页面中总共有10个选项卡和大约150个控件(仅下拉列表,文本框,单选按钮,列表框等控件)。

我的要求是页面底部有一个按钮(提交)。我需要检查使用JavaScript,从该页面的150个控件中选择至少3个选项,而不管他们选择哪个选项卡。

请建议在我的aspx页面上用JavaScript完成这个最简单,最简单的方法。

5 个答案:

答案 0 :(得分:4)

假设页面上只有一个表单(如果更多则循环通过表单并嵌套下面的循环)。

  var selectedCount = 0;
  var element;

  for (var i = 0; i < document.forms[0].elements.length; i++)
  {
    element = document.forms[0].elements[i];

    switch (element.type)
    {
      case 'text':
        if (element.value.length > 0)
        {
          selectedCount++;
        }
        break;
      case 'select-one':
        if (element.selectedIndex > 0)
        {
          selectedCount++;
        }
        break;
      //etc - add cases for checkbox, radio, etc.
    }
  }

答案 1 :(得分:0)

我会根据原型serialize方法查看一些内容 - 它可以为您提供所有表单控件的哈希值 - 它可能会让您对所需内容有所了解。

像firebug这样的东西会帮助你看到你得到的东西并评估它是否符合你的需求。

答案 2 :(得分:0)

您说您需要验证是否应该选择至少三个选项,但您是否有可能需要验证超过这三个选项?控件是否具有唯一的ID或类名?您使用的是特定框架(jQuery,Prototype等)吗?

在不了解您的项目的情况下,很难提出任何可靠的建议,但是使用纯JavaScript(没有框架),并且假设您拥有独特的类名,我会说......

  • 加载DOM后,将需要验证的所有控件加载到数组中(通过ID或类名获取)
  • 附加一个事件监听器,以便在点击时提交以捕获
  • 在提交实际发生之前,迭代您的控件列表并根据需要验证每个控件。如果验证结果良好,请继续执行提交的默认操作;否则,将某种形式的错误消息返回给用户。

这听起来像是一个非常通用的解决方案,但如果不了解您的设置,很难提供任何具体的代码。

答案 3 :(得分:0)

jQuery在页面上获取控件会简单得多:

var inputs = $('input');
var selects = $('select');

var textBoxes = $("input[type='text']");

答案 4 :(得分:0)

你真的应该考虑使用jquery来解决这个问题。它是免费的,所有酷的Javascript程序员最近都在使用它!

如果你使用jquery,你的问题变得非常简单。以下代码行将搜索整个页面,并在所选的任何位置返回列表项的数量。

var count = $("option:selected").length;