【发布时间】:2009-02-13 09:48:52
【问题描述】:
是否可以使用 JavaScript 设置 RegularExpressionValidator 的 ValidationExpression?我正在使用 ASP.NET 3.5。
这就是我想要这样做的原因......
在支付页面上,我有一个DropDownList,它允许我的用户选择他们的卡类型。在其下方是TextBox,他们在其中输入他们的卡号。
我想使用RegularExpressionValidator 来验证他们的卡号对于他们给定的卡类型是否有效。卡支付处理是在不同的系统中手动执行的,所以我不能依靠它来捕获不正确的卡详细信息。
因此,我需要为每种卡类型使用不同的ValidationExpression。我想使用 JavaScript 设置 ValidationExpression,触发 DropDownList onchange 事件。
我的DropDownList 绑定到一个 XML 文档:
<asp:DropDownList ID="ddlCardType" runat="server"
DataTextField="Text" DataValueField="Value"
DataSourceID="xdsCardTypes" AppendDataBoundItems="True">
<asp:ListItem Text="(select)" Value=""></asp:ListItem>
</asp:DropDownList>
<asp:XmlDataSource ID="xdsCardTypes" runat="server"
DataFile="~/App_Data/PaymentCards.xml">
</asp:XmlDataSource>
这是 XML 文档:
<?xml version="1.0" encoding="utf-8" ?>
<PaymentCards>
<PaymentCard Text="American Express" Value="AmericanExpress" RegEx="3[47](\d{13})" />
<PaymentCard Text="MasterCard" Value="MasterCard" RegEx="5[1-5](\d{14})" />
<PaymentCard Text="Maestro" Value="Maestro" RegEx="(5018|5020|5038|6304|6759|6761)\d{8,15}" />
<PaymentCard Text="Visa" Value="Visa" RegEx="4(\d{15}|\d{12})" />
</PaymentCards>
在代码隐藏中,我正在创建一个 JavaScript 函数调用并将其添加到 DropDownList 的 onchange 事件中:
XDocument paymentCards = XDocument.Parse(xdsCardTypes.GetXmlDocument().InnerXml, LoadOptions.None);
List<string> regExes = paymentCards.Descendants("PaymentCard")
.Select(pc => pc.GetAttribute("RegEx").Value).ToList();
string setRegExValidatorScript = string.Format("setRegExValidator('{0}', '{1}', {2});",
ddlCardType.ClientID,
txtCardNumber_RegularExpressionValidator.ClientID,
regExes.ToJavaScriptArgumentList());
ddlCardType.AddAttribute("onchange", setRegExValidatorScript);
在引用的 .js 文件中,我有以下内容:
function setRegExValidator(ddlCardTypeID, regExValidatorID, regExes)
{
var regEx = regExes[$get(ddlCardTypeID).selectedIndex];
var val = $get(regExValidatorID);
// TODO: Set the ValidationExpression!
}
所以我缺少的一个链接是能够从 JavaScript 设置ValidationExpression。是的,我可以使用回发来实现这一点,但这似乎没有必要。
(也欢迎提出替代方法的建议!)
【问题讨论】:
标签: asp.net validation webforms