检查条件隐藏的文本框是否具有值

时间:2015-07-13 09:37:25

标签: c# asp.net textbox panel

我有一个YES / NO问题清单,每个问题都有一个指示答案的单选按钮。当用户选择“是”时,将显示panel并且其中包含文本框以用于额外的所需输入。当用户回答“是”时,他们必须填写出现的文本框。

目前我用这种方式编码很难:

            if (txtQ1Specify.Visible == true)
            {
                if (txtQ1Specify.Text.Length == 0)
                {
                    lblError.Text = "Please answer all questions.";
                }
            }
            if (txtQ2Specify.Visible == true)
            {
                if (txtQ2Specify.Text.Length == 0)
                {
                    lblError.Text = "Please answer all questions.";
                }
            }
            if (txtQ3Specify.Visible == true)
            {
                if (txtQ3Specify.Text.Length == 0)
                {
                    lblError.Text = "Please answer all questions.";
                }
            }
            if (txtQ4SpecifyCompany.Visible == true || txtQ4SpecifyRelative.Visible == true)
            {
                if (txtQ4SpecifyCompany.Text.Length == 0 || txtQ4SpecifyRelative.Text.Length == 0)
                {
                    lblError.Text = "Please answer all questions.";
                }
            }
            if (txtQ5SpecifyCompany.Visible == true || txtQ5SpecifyRelative.Visible == true)
            {
                if (txtQ5SpecifyCompany.Text.Length == 0 || txtQ5SpecifyRelative.Text.Length == 0)
                {
                    lblError.Text = "Please answer all questions.";
                }
            }
            if (txtQ6Specify.Visible == true)
            {
                if (txtQ6Specify.Text.Length == 0)
                {
                    lblError.Text = "Please answer all questions.";
                }
            }
            if (txtQ7Specify.Visible == true)
            {
                if (txtQ7Specify.Text.Length == 0)
                {
                    lblError.Text = "Please answer all questions.";
                }
            }

在检查之后我想执行一些代码。

页面如下所示:

screenshot

如何根据可见性检查文本框输入?

3 个答案:

答案 0 :(得分:1)

您可以使用LINQ来查明是否有任何可见和空的TextBox,如下所示:

var query =
    from t in Page.Controls.OfType<TextBox>()
    where t.Visible && t.Text == ""
    select t;

bool hasUnanswered = query.Any();

答案 1 :(得分:0)

这可以在客户端轻松完成。

  1. 首先,您需要确定哪个文本框可见。为此,您可以使用jquery Visible Selector

  2. 现在如果可以看到多个文本框。向用户显示一些消息,并聚焦并突出显示需要填写的文本框。

  3. $(document).ready(function(){
        var visibleCount =$('input[type="text"]:visible').length;
      if (visibleCount  > 0)
      {
         // Add your logic here
       }
    });
    

答案 2 :(得分:0)

我设法使用很长的if语句来完成它。这里什么都没有:

if ((pnlQ1Yes.Visible == true && txtQ1Specify.Text.Length == 0) ||
            (pnlQ2Yes.Visible == true && txtQ2Specify.Text.Length == 0) ||
            (pnlQ3Yes.Visible == true && txtQ3Specify.Text.Length == 0) ||
            (pnlQ4Yes.Visible == true && (txtQ4SpecifyCompany.Text.Length == 0 || txtQ4SpecifyRelative.Text.Length == 0)) ||
            (pnlQ5Yes.Visible == true && (txtQ5SpecifyCompany.Text.Length == 0 || txtQ5SpecifyRelative.Text.Length == 0)) ||
            (pnlQ6Yes.Visible == true && txtQ6Specify.Text.Length == 0) ||
            (pnlQ7Yes.Visible == true && txtQ7Specify.Text.Length == 0))
{
    lblError.Text = "Please answer all questions.";
}
else   
{
    ...
}

首先检查面板是否为visible,然后检查面板内的文本框是否有值。然后我重复这种检查其余的面板和文本框。