Я думал, что то, что я пытаюсь сделать, было довольно тривиально, но, похоже, это меня сильно беспокоило. Вот ситуация.Функция проверки клиента клиента CustomValidator не срабатывает
У меня есть два переключателя (реализованы с использованием RadButton) и RadTextBox. Я хочу проверить на клиенте перед отправкой формы, в которой RadTextBox не пуст, когда выбран один из двух переключателей (скажем, первый). Я использовал CustomValidator, и я установил ValidateEmptyText = «True», чтобы не повезло. Экстракт код ниже:
<asp:Panel runat="server" ID="Panel1">
<table>
<tr>
<td class="auto-style5">
<telerik:RadButton ID="rdBtnIndividual" runat="server" AutoPostBack="False" GroupName="rdEmplrType"
Text="Individual" ToggleType="Radio" OnClientCheckedChanged="rdBtnPhysical_CheckedChanged"
UseSubmitBehavior="False">
<ToggleStates>
<telerik:RadButtonToggleState PrimaryIconCssClass="rbToggleRadioChecked" />
<telerik:RadButtonToggleState PrimaryIconCssClass="rbToggleRadio" />
</ToggleStates>
</telerik:RadButton>
</td>
<td>
<telerik:RadButton ID="rdBtnLegal" runat="server" AutoPostBack="False" GroupName="rdEmplrType" Text="Legal Entity"
ToggleType="Radio" OnClientCheckedChanged="rdBtnLegal_CheckedChanged" UseSubmitBehavior="False">
<ToggleStates>
<telerik:RadButtonToggleState PrimaryIconCssClass="rbToggleRadioChecked" />
<telerik:RadButtonToggleState PrimaryIconCssClass="rbToggleRadio" />
</ToggleStates>
</telerik:RadButton>
</td>
</tr>
<tr>
<td class="auto-style5">
<label>Name:</label>
</td>
<td>
<telerik:RadTextBox ID="txtName" Runat="server" EmptyMessage="Name" LabelWidth="64px" Resize="None" Width="160px" DisabledStyle-BackColor="Silver">
</telerik:RadTextBox>
</td>
<td><asp:RequiredFieldValidator ID="THIS_IS_WORKING" ControlToValidate="txtName"
runat="server" ErrorMessage="<img src='images/Exclamation.png' Title='Required Field'/>" >
</asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td class="auto-style5">
<label>Father's Name</label>
</td>
<td style="width:100px">
<telerik:RadTextBox ID="txtFathersName" Runat="server" EmptyMessage="Father's Name" LabelWidth="64px" Resize="None" Width="160px" DisabledStyle-BackColor="Silver">
</telerik:RadTextBox>
</td>
<td>
<asp:CustomValidator runat="server" ID="NOT_WORKING_VALIDATOR" ControlToValidate="txtFathersName" ValidateEmptyText="True"
ClientValidationFunction="RequiredIfIndividual"
ErrorMessage="<img src='images/Exclamation.png' Title='Required Field'/>" EnableClientScript="True">
</asp:CustomValidator>
</td>
</tr>
</table>
</asp:Panel>
Javascript ниже:
<script type="text/javascript">
function RequiredIfIndividual(sender, args) {
var chkBoxIndividual = $find("<%=rdBtnIndividual.ClientID%>");
chkBoxIndividual = $telerik.toButton(chkBoxIndividual);
if (chkBoxIndividual.get_checked()) {
if (args.Value == "") {
args.IsValid = false;
}
else {
args.IsValid = true;
}
} else {
args.IsValid = true;
}
}
</script>
Ты мужчина. Спасибо за публикацию. Я почесал голову на 2 часа об этом. объяснил это совершенно. – kman
отличная работа. спасибо :) – n3verLieMe
Привет @Lefteris, я столкнулся с той же проблемой, но в моем случае я на .Net 4.0 не 4.5. Функция пользовательского валидатора JS никогда не запускается. Ох, и я использую элемент ValidationSummary для отображения ошибок. Какие-либо предложения? – Sergiu