Est-il possible de définir le ValidationExpression
d'un RegularExpressionValidator
en utilisant JavaScript? J'utilise ASP.NET 3.5.Définition de RegularExpressionValidator ValidationExpression dans JavaScript
Voici pourquoi je veux faire ...
Sur une page de paiement J'ai un DropDownList
qui permet à mon utilisateur de choisir leur type de carte. En dessous, il y a un TextBox
dans lequel ils tapent leur numéro de carte.
Je souhaite utiliser un RegularExpressionValidator
pour valider que leur numéro de carte est valide pour leur type de carte. Le traitement du paiement par carte est effectué manuellement dans un système différent, donc je ne peux pas compter sur cela pour attraper les détails de la carte incorrecte.
Par conséquent, je dois utiliser un ValidationExpression
différent pour chaque type de carte. Je voudrais définir le ValidationExpression
en utilisant JavaScript, déclenchant l'événement DropDownList
onchange.
Mon DropDownList
est lié à un document 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>
Voici le doc 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>
Dans le code-behind je crée un appel de fonction JavaScript et l'ajouter à la onchange événement de la DropDownList
:
Et dans un fichier .js référencé I ont les suivantes:
function setRegExValidator(ddlCardTypeID, regExValidatorID, regExes)
{
var regEx = regExes[$get(ddlCardTypeID).selectedIndex];
var val = $get(regExValidatorID);
// TODO: Set the ValidationExpression!
}
Donc mon seul chaînon manquant est la possibilité de définir la ValidationExpression
de JavaScript. Oui, je pourrais utiliser une publication pour y parvenir, mais cela semble inutile.
(suggestions sur une autre approche sont également les bienvenus!)
Merci Luke, mais cela ne semble pas fonctionner. L'expression de validation du validateur semble être mise à jour, mais la validation échoue toujours. –
@Richard, je viens de tester ce (bien, quelque chose de très similaire) dans IE, Firefox et Chrome et cela fonctionne comme prévu. Est-ce que les expressions régulières fonctionnent correctement si vous les essayez individuellement dans un RegularExpressionValidator standard sans aucun des éléments JavaScript dynamiques? – LukeH
Un grand merci pour votre rigueur Luke! Mes RegExes fonctionnent bien si je les mets directement dans le fichier aspx, je ne suis pas sûr de ce qui se passe. Après réflexion, j'ai décidé de le faire en C# dans un CustomValidator, car j'en utilisais un pour d'autres validations. –