Я пытаюсь проверить, что определенное приращение продукта было введено в текстовое поле количества продукта, которое находится в повторителе. Проблема в том, что приращение отличается для каждого продукта, поэтому мне нужно, чтобы в качестве переменной для каждого вызова его проверяли (что, я думаю, вы не можете сделать с помощью пользовательского валидатора), и мне нужна его сторона клиента с ValidatorCalloutExtender , Лучшее решение, которое я придумала, - это запустить валидатор RegEx, который будет оценивать false через мой собственный javascript (другой валидатор позаботится о том, чтобы убедиться, что это верный номер). Проблема в том, что с ValidatorCalloutExtender, когда я отключаю валидатор, он все равно помечает его как недействительный (текстовое поле мигает белым, затем снова становится желтым (что означает его недействительным), даже если я разместил предупреждения JavaScript и знаю, что валидатор отключается. есть идеи относительно того, что здесь происходит? Вот код. Спасибо!
PS: все отлично работает без validatorCalloutExtender, но мне действительно нужен Callout Extender!
Валидаторы:
<asp:RegularExpressionValidator ID="ProductIncrementValidator" runat="server"
ControlToValidate="ProductQtyTxt"
ErrorMessage="Please enter a valid increment"
ValidationExpression="^triggerthisvalidation$"
Enabled="false"
Display="Dynamic"
SetFocusOnError="true"
ValidationGroup="productValidation">
</asp:RegularExpressionValidator>
<ajax:ValidatorCalloutExtender ID="ProductIncrementVE" runat="server"
TargetControlID="ProductIncrementValidator"
HighlightCssClass="validator"
WarningIconImageUrl="~/img/blank.gif">
</ajax:ValidatorCalloutExtender>
При привязке данных к продукту:
Dim productQtyTxt As TextBox
productQtyTxt = CType(e.Item.FindControl("ProductQtyTxt"), TextBox)
Dim incrementValidator As RegularExpressionValidator
incrementValidator = CType(e.Item.FindControl("ProductIncrementValidator"), RegularExpressionValidator)
incrementValidator.ErrorMessage = "Please enter an increment of " & product.OrderIncrement.ToString()
' Add item qty increment check
productQtyTxt.Attributes.Add("onChange", "javascript:checkIncrement('" _
& productQtyTxt.ClientID & "', " _
& product.OrderIncrement & ", '" _
& incrementValidator.ClientID & "')")
Javascript:
function checkIncrement(textboxID, incrementQty, validatorID) {
var textbox = $get(textboxID);
var incrementValidator = $get(validatorID);
var qtyEntered = textbox.value;
if ((qtyEntered % incrementQty) != 0) {
ValidatorEnable(incrementValidator, true);
alert("not valid");
return;
}
else {
ValidatorEnable(incrementValidator, false);
alert("valid");
return;
}
}