【发布时间】:2010-11-06 05:01:23
【问题描述】:
我正在尝试验证是否在转发器中的产品数量文本框中输入了某个产品增量。问题是每个产品的增量都不同,所以我需要它作为每次调用的变量来验证它(我认为你不能用自定义验证器来做),我需要它在客户端使用 ValidatorCalloutExtender .我想出的最佳解决方案是触发一个 RegEx 验证器,它将通过我自己的 javascript 评估 false(另一个验证器负责确保其有效数字)。问题是,使用 ValidatorCalloutExtender,当我禁用验证器时,它仍然将其标记为无效(文本框闪烁白色然后再次变为黄色(意味着它无效),即使我放置了 JavaScript 警报并且我知道验证器正在被禁用。任何人对这里发生的事情有任何想法吗?这是代码。谢谢!
PS:没有验证器CalloutExtender 一切正常,但我真的需要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;
}
}
【问题讨论】:
-
我在 javascript 函数中将文本框的 cssclass 设置为空白并隐藏了标注,所以现在可以使用,但是当焦点设置在框上时,它会调用验证并尝试针对我的 ^triggerthisvalidation$ 表达式进行验证对于 RegEx 验证器。我怎样才能让它不触发焦点验证?
标签: asp.net javascript validation