【问题标题】:Validating textbox values验证文本框值
【发布时间】:2010-09-14 08:00:01
【问题描述】:
我有三个文本框:Textbox1、Textbox2、Textbox3
我必须检查三个值是否相同。
例如:我在一个文本框中有 1 作为值。我不能在其他两个文本框中有 1。
我正在使用文本框输入 ID。如果我输入重复的 id(例如我在 Textbox1 和 Textbox2 / Textbox3 中输入 1 ),程序应该给我一条消息。
【问题讨论】:
标签:
c#
asp.net
validation
【解决方案1】:
您可以使用CustomValidator 和额外的ClientValidation-Function。
类似这样的:
<script type="text/javascript" >
function ClientValidate(sender, args){
var Textbox1=document.getElementById('<%=Textbox1.ClientID%>');
var Textbox2=document.getElementById('<%=Textbox2.ClientID%>');
var Textbox3=document.getElementById('<%=Textbox3.ClientID%>');
if(Textbox1!=null && Textbox2!=null && Textbox3!= null){
args.IsValid = !(Textbox1.value==Textbox2.value || Textbox1.value==Textbox3.value || Textbox2.value==Textbox3.value);
}
return;
}
</script>
【解决方案2】:
如果您不使用 LINQ,那么在服务器上执行此操作的常用方法可能是:
string tb1 = Textbox1.Text.Trim();
string tb2 = Textbox2.Text.Trim();
string tb3 = Textbox3.Text.Trim();
if( tb1 == tb2 || tb1 == tb3 || tb2 == tb3)
{
// Do something
}
如果您需要在客户端上执行此操作,您可以使用 3 个 CompareValidators 来执行类似的操作。
【解决方案4】:
var uniqueTextcount = (new [] { tb1, tb2, tb3 }).Select(tb => tb.Text).Distinct().Count()
if (uniqueTextCount != 3)
// ARGH!