2012-11-06 66 views
0

我有2个字段,并且只有其他字段中包含“NO”值的内容时,我需要将其中一个字段设置为必填字段。所以我在网上进行了研究,这就是我最终得到的结果。唯一的问题是我需要的帮助是代码的第一部分,它称之为:.getElementByID。我怎样才能构建它?或者,如果你可以摆脱一些灯光将是伟大的。我如何根据另一个字段的输入验证字段

<script> 
     function Validate(source, args) { 
       if (document.getElementById('<%= TextBox1.ClientID %>').value.toUpperCase() == "NO" && 
       document.getElementById('<%= TextBox2.ClientID %>').value.length == 0) 
         args.IsValid = false; 
       else 
         args.IsValid = true; 
     } 
</script> 
</head> 
<body> 
     <form id="form1" runat="server"> 
     <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> 
     <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox> 
     <asp:CustomValidator ID="CustomValidator1" runat="server" ErrorMessage="TextBox2 Should Be Filled" 
       Display="Dynamic" ClientValidationFunction="Validate" OnServerValidate="CustomValidator1_ServerValidate"></asp:CustomValidator> 
     <asp:Button ID="Button1" runat="server" Text="Button" /> 
     </form> 
</body> 
</html> 

protected void Page_Load(object sender, EventArgs e) 
     { 
       if (!Page.IsPostBack) 
       { 
         Page.Validate(); 
         if (!Page.IsValid) 
           Response.Write("TextBox2 should be filled"); 

       } 
     } 

     protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args) 
     { 
       args.IsValid = !(this.TextBox1.Text.Equals("NO", StringComparison.CurrentCultureIgnoreCase) && this.TextBox2.Text.Length == 0); 
+0

你在寻找服务器端验证? – BrOSs

回答

4

的第一个错误的视线之内是:

if (!Page.IsPostBack) // <--- here 
{ 
     Page.Validate(); 
     if (!Page.IsValid) 
       Response.Write("TextBox2 should be filled"); 

} 

变化!Page.IsPostBackPage.IsPostBack,因为它是没有意义的验证用户输入,如果该页面未张贴回来呢。

根据你关于你的客户验证码的问题:实际上有什么问题?你的代码是否工作,你是否有异常,即使它是无效的,它是否回发?出了什么问题?

+0

谢谢,我会解决这个问题。我发现在线代码的脚本部分,所以我不明白它说的是:document.getElementById,所以我不知道如果这是一个函数,我必须写或什么...所以这就是我在这里丢失的地方。 – moe

+0

好的,但是,它是否按预期工作,因为它一见不明确为什么它不应该。 –

+0

我还没有尝试,因为我仍然试图在代码中进行更改,所以我可以尝试它,但无法理解脚本函数如何工作.. – moe

相关问题