2017-03-30 5 views
0

J'ai donc un contrôle de répéteur ASP.NET avec une zone de texte et un div avec le texte de validation qui est caché. J'essaie d'afficher cette div basé sur si les caractères spéciaux sont entrés dans la zone de texte. J'ai réussi à appliquer l'expression rationnelle jquery dans toutes les zones de texte, mais j'essaie de comprendre comment appliquer l'erreur de validation à la ligne de la zone de texte où l'entrée est saisie par l'utilisateur, car je veux que l'erreur div affiche le message sur cette ligne particulière. Je peux le faire fonctionner sur la première ligne mais depuis que le répéteur crée ses propres identifiants de contrôle dans le HTML, je me demandais comment s'y prendre. Voici mon code:Comment accéder à l'élément DIV à l'intérieur du répéteur en utilisant JQuery

$(function(){ 

$('[id*=txtbox1]').keyup(function() 
{ 
    var Input = $(this).val(); 
    re = /[`[email protected]#$%^&*()_|+\-=?;:'",.<>\{\}\[\]\\\/]/gi; 
    var SplChar = re.test(Input); 
    if(SplChar) 
    { 
     var replchar = Input.replace(/[`[email protected]#$%^&*()_|+\-=?;:'",.<>\{\}\[\]\\\/]/gi, ''); 
     $(this).val(replchar); 
        $('#ErrorDiv').show(); 
    } 
});}); 



<asp:Repeater ID="rptItems" runat="server"> 
<ItemTemplate> 
      <asp:textbox ID="txtbox1" runat="server" Text='<%# Eval("Questions") %>' /> 
      <div id="ErrorDiv" style="display: none;">No special characters</div> 
</ItemTemplate> 

suggestions? Appréciez l'aide.

+0

Publiez le code HTML résultant et n'utilisez pas 'id =" ErrorDiv "' car les ID d'un document HTML doivent être uniques. – Legends

+0

Devrais-je ajouter une étiquette d'asp alors à la place? Comme l'ID HTML ou les zones de texte au moins serait comme txtbox1_0, txtbox1_1, txtbox1_2, txtbox1_3, txtbox1_4. – Rankone

+0

Afficher le code HTML résultant du répéteur ... – Legends

Répondre

0

classe Ajouter à votre zone de texte html comme si

<asp:textbox ID="txtbox1" class="question" runat="server" Text='<%# Eval("Questions") %>' />

Vous pouvez remplacer

$('[id*=txtbox1]').keyup(function() ...

à cette

$(".question").keyup(function() ...


Et ce #ErrorDiv ne fonctionnera pas .. puisque l'ID doit être unique et votre répéteur créera plusieurs div avec le même ID. Changez donc id="ErrorDiv" en class="errorDiv".

mal

$('#ErrorDiv').show();

correct

// $('#ErrorDiv').show(); 
$(this).next(".errorDiv").show(); 
+0

Merci Sudarpo Chong, j'ai suivi votre conseil et ajouté la classe au lieu de compter sur les identifiants. Cela a semblé fonctionner, apprécier l'aide! – Rankone

+0

De rien, @Rankone. Heureux de vous aider. C'est le problème commun que nous rencontrons en travaillant avec des formulaires web asp net;) –

0

Le problème que vous faites face est parce que TextBox-id sont uniques. La seule solution est donc de sélectionner les éléments en utilisant getElementsByName ou par leur nom class.

+0

Appréciez l'aide Webruster, oui en fonction de la réponse ci-dessus, c'est l'approche que j'ai suivie. – Rankone