我在同一个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;
}
}
答案 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。