我有一个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.";
}
}
在检查之后我想执行一些代码。
页面如下所示:
如何根据可见性检查文本框输入?
答案 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)
这可以在客户端轻松完成。
首先,您需要确定哪个文本框可见。为此,您可以使用jquery Visible Selector
现在如果可以看到多个文本框。向用户显示一些消息,并聚焦并突出显示需要填写的文本框。
$(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
,然后检查面板内的文本框是否有值。然后我重复这种检查其余的面板和文本框。