需要一个javascript函数来识别单击“保存”按钮时使用的文本框

时间:2016-03-08 13:01:33

标签: javascript c# asp.net client-side-validation

我在同一个ASP.net页面的3个选项卡中有3个文本框,并且相应的3个javascript函数具有相同的功能。目前我正在为三个文本框使用3种不同的功能。我只需要一个javascript函数而不是三个。请帮帮我

<asp:TextBox ID="textBox1" runat="server" ValidationonGroup="abcd"></asp:TextBox>
<asp:CustomValidator ID="ID1" runat="server" ValidationGroup="abcd" ControlToValidate="textBox1" ErrorMessage="message" ClientValidationFunction="fname"></asp:CustomValidator>

Javascript functon

function fname(sender, args) {
 var x = document.getElementById('<%=txtBox1.ClientID%>').value;
 if (some condition) { 
args.IsValid = false; 
} else { 
args.IsValid = true;
}
}

2 个答案:

答案 0 :(得分:0)

一种方法是检查哪个文本框值!=&#34;&#34;并根据此

执行发送

例如你的onClick处理程序可能包含这个。

if(document.getElementById('<%=txtBox1.ClientID%>').value != ""){ 
do this
} else if (document.getElementById('<%=txtBox2.ClientID%>').value != ""){ 
do this
} else {
do this
}

答案 1 :(得分:0)

为什么不制作一个接收文本框ID的函数并从其他3中调用它:

function fname(textBoxID, sender, args) {
  var x = document.getElementById(textBoxID).value;
  if (some condition) { 
    args.IsValid = false; 
  } else { 
  args.IsValid = true;
  }
}

当您为第一个文本框调用它时,只需传递'&lt;%= txtBox1.ClientID%&gt;'作为第一个参数。同样,传递'&lt;%= txtBox2.ClientID%&gt;'对于第二个文本框...

还有另一种解决方案,您可以在此处详细了解:Passing value from CustomValidator

简而言之,它是这样的:使用sender.id来获取CustomValidator的id。然后只要验证器的id是具有前缀'Validator_'的TextBox的id,我就可以使用javascript替换去除'Validator_',因此找出TextBox Id。