Я имею ASP.NET
форма для запросов обмена валюты. Там существует два текстовых поля: источник суммы и цель суммы.
Один из них должен быть переполнен и только один.
Как реализовать это использование Блоки проверки допустимости, если применимо?
Вы можете использовать пользовательские валидаторы для этого:
<asp:Textbox id="textbox1" runat="server" />
<asp:CustomValidator id="valCustom" runat="server"
ControlToValidate="textbox1"
ClientValidationFunction="ClientValidate"
OnServerValidate="ServerValidate"
ErrorMessage="*You can only enter 1" display="dynamic">*
</asp:CustomValidator>
<asp:Textbox id="textbox2" runat="server" />
<asp:CustomValidator id="valCustom2" runat="server"
ControlToValidate="textbox2"
ClientValidationFunction="ClientValidate"
OnServerValidate="ServerValidate"
ErrorMessage="*You can only enter 1" display="dynamic">*
</asp:CustomValidator>
<script language="Javascript">
function ClientValidate(source, arguments)
{
var tb1 = document.getElementById("<%=textbox1.ClientID %>").value;
var tb2 = document.getElementById("<%=textbox2.ClientID %>").value;
if (tb1 && tb2 || (!tb1 && !tb2)){
arguments.IsValid = false;
} else {
arguments.IsValid = true;
}
}
</script>
Server-Side:
protected void ServerValidate(object sender, ServerValidateEventArgs args)
{
if(string.isNullOrEmpty(textbox1.Text) && string.isNullOrEmpty(textbox2.Text))
args.IsValid = false;
else if(!string.isNullOrEmpty(textbox1.Text) && !string.isNullOrEmpty(textbox2.Text))
args.IsValid = false;
else
args.IsValid = true;
}
Если вы используете jQuery, пожалуйста, прокомментируйте ... Это все может быть намного чище.
Я бы реализовал пользовательский Валидатор и украсил им оба TextBox. Если оба заполнены, то оба находятся в состоянии ошибки.