ASP.NET - Validateur Personnalisé avec Dynamique ErrorMessage
Je suis en train d'essayer de s'assurer qu'un nombre entré dans une zone de texte est divisibly par 1.25 ou 1.5. Le wayI décider le temps de mod le nombre par 1.25 ou 1.5 dépend de ce qui est dans une autre liste déroulante. Par exemple: Si l'indice de DDL est de 1, je mod par 1.5, si c'est 2 je mod par 1,25.
Cependant j'ai besoin d'afficher à l'utilisateur de comprendre pourquoi l'erreur a été levée. Le message d'erreur de validation personnalisée doit être quelque chose comme "le Nombre Doit être devisible par 1.25" ou vice versa.
De ce que je peux me dire le code devrait fonctionner. Mais il ne le fait pas. J'ai lu sur un autre forum que la prise de la source et de faire le innerText votre message d'erreur devrait faire l'affaire. Mais je dois être en train de faire quelque chose de mal, quelque part. Quand je marche à travers ma fonction javascript il des étapes à la perfection. Tout simplement pas de message d'erreur. Voici mon code:
<asp:CustomValidator ID="ValidateFinHeight" runat="server" CssClass="NormLabel"
Display="Dynamic"
ControlToValidate="txtFinHeight"
ClientValidationFunction="validateFinHeight"></asp:CustomValidator>
<script type="text/javascript" language="javascript" >
function validateFinHeight(source, arguments)
{
var ddl = document.getElementById('cboTubeDia');
var ddlSelIndex = ddl.selectedIndex
switch(ddlSelIndex)
{
case 0:
arguments.isValid = true;
return;
case 1:
if(arguments.value%1.25 != 0)
{
source.innerText = "Height must be divisibly by 1.25";
arguments.isValid = false;
return;
}
else
{
arguments.isValid = true;
return;
}
case 2:
if(arguments.value%1.5 != 0)
{
source.innerText = "Height must be divisibly by 1.5";
arguments.isValid = false;
return;
}
else
{
arguments.isValid = true;
return;
}
}
}
</script>
OriginalL'auteur Johnrad | 2011-01-04
Vous devez vous connecter pour publier un commentaire.
Il y avait plusieurs erreurs mineures dans vos fonctions javascript en fonction de la sensibilité de cas(f.e.
IsValid
etValue
). J'ai débogué, de voir ce que la propriété de l'Erreur de Durée je dois définir. C'était latextContent
attribut pour Firefox etinnerText
pour IE.Le travail de la fonction(de la croix-navigateur compatible:
Pourquoi ne pas nous laisser ces crossbrowser questions sur jQuery? suffit d'utiliser $(src)
OriginalL'auteur Rango
Désolé, ne peut pas commenter les autres réponses en tant qu'invité. Je tiens à souligner un problème avec la Question ainsi que Tims réponse:
Utilisant des "arguments" comme un nom de paramètre peut conduire à des problèmes (au moins j'ai vécu et que dans firefox 20) parce que c'est aussi une auto-variable qui contient tous les arguments qui sont passés à la fonction, il y a donc un conflit de nom si un paramètre est nommé de la même façon. Je recommande de changer le nom du paramètre 'args' ou quoi que ce soit d'autre.
OriginalL'auteur Matthias