У меня есть несколько валидаторов ASP.NET на моей странице различных типов, некоторые из которых я отключу в зависимости от выбора пользователя на странице, используя javascript.CustomValidator problem
$.each(Page_Validators, function(index, validator)
{
if ($(validator).hasClass("pain")) {
ValidatorEnable(validator, false);
}
});
Это, кажется, работает и валидаторы не срабатывают во всех случаях, за исключением каких-либо CustomValidators, что я использую, когда я не могу использовать другие типы валидатора
<asp:CheckBoxList id="BodyPartsList" runat="server" RepeatColumns = "2"
Width="1023px">
<asp:ListItem Text = "0. Head/headaches" Value = "1"></asp:ListItem>
<asp:ListItem Text = "1. Leg(s)" Value = "2"></asp:ListItem>
<asp:ListItem Text = "2. Arm(s)" Value = "3"></asp:ListItem>
<asp:ListItem Text = "3. Neck" Value = "4"></asp:ListItem>
<asp:ListItem Text = "4. Shoulder(s)" Value = "5"></asp:ListItem>
<asp:ListItem Text = "5. Low Back" Value = "6"></asp:ListItem>
<asp:ListItem Text = "6. Upper Back" Value = "7"></asp:ListItem>
<asp:ListItem Text = "7. Feet" Value = "8"></asp:ListItem>
<asp:ListItem Text = "8. Hand(s)" Value = "9"></asp:ListItem>
<asp:ListItem Text = "9. Other(Describe in "Details of Plan")" Value = "10"></asp:ListItem>
</asp:CheckBoxList>
<asp:CustomValidator ID="PainLocationValidator" runat="server" Display="Dynamic"
ErrorMessage="Location of pain is required."
ClientValidationFunction="checkPainListValidate"
ValidationGroup = "OnSave" EnableClientScript= "true" SetFocusOnError= "true" Width = "100%" CssClass = "pain" />
function checkPainListValidate(sender, args) {
args.IsValid = true;
if ($('#<%= BodyPartsList.ClientID %> input:checked').length > 0)
args.IsValid = true;
else
args.IsValid = false;
}
Почему это происходит? Есть ли что-то еще, что я могу сделать, чтобы отключить их?
Спасибо.
Благодарности к ответ и некоторые полезные идеи 1. Я не разобрал 1-ю идею 2. Я проверяю ее на стороне клиента, поэтому использую «ClientValidationFunction», см. обновление 3. Я не указываю 'ControlToValidate, потому что это checkboxlist, и я получаю ошибки, если я сделай это. 4. Если вы отключите валидатор, он все равно будет проверяться при каждой обратной передаче? – Victor
@Victor: точка 1 была опечаткой, которую я только частично удалил (пустой текст никогда не проверяется, если вы не установите ValidateEmptyText в true, но это вам не поможет). Я думал, что вы хотите отключить валидатор, так почему вы спрашиваете, будет ли он проверять на обратной стороне? Покажите нам также js-код, в котором вы отключите валидаторы и функцию ClientValidationFunction. Отладка js, чтобы узнать, что произойдет. –
@Tim Да, я пытаюсь отключить валидатор, поэтому просто интересно, почему он все еще активен, и postback никогда не происходит. В этом классе есть несколько валидаторов, и только CustomValidator остается активным. – Victor