2010-09-28 4 views
0

$(function() { $('#<%=btnAdd.ClientID%>').click( { code }); });Jquery ne fonctionne pas lorsque extériorisée à js

Le code jquery ci-dessus, je l'ai écrit dans le code ASPX et il fonctionne très bien. Mais quand j'ai essayé d'externaliser le code en créant un fichier js et en transférant le code interne dans ce fichier, cela ne fonctionne pas. Je veux dire quand j'écris le même code dans un fichier externe et l'ajoute à la page aspx cela ne fonctionne pas.Peut-on m'aider à résoudre le problème?

Répondre

0

Cela peut être fait en passant la valeur dans une variable de la page ASPX. Comme: En page ASPX:

<script language="javascript" type="text/javascript"> 
var btnAdd = '<%= btnAdd.ClientID %>'; 
<script> 

Dans le fichier js extériorisée:

$(function() 
{ 
    $('#' + btnAdd).click({ 
     ----code---- 
    }); 
}); 
2

<% = btnAdd.ClientID%> ne sera pas analysé par le processus de travail asp.net afin qu'il ne soit pas remplacé par l'ID client du bouton. Ce code doit être dans votre page aspx.
L'alternative consiste à sélectionner votre bouton d'une manière différente, par ex. classe, entrée [type = « submit »], etc.

$(function() { $('input[type="submit"]').click({ code }); }); 
+0

Voulez-vous expliquer la alternative un plus? – ANP

+0

@ANP Il existe un bon exemple d'utilisation d'une classe affichée dans la réponse de @ Nick, qui serait probablement la meilleure solution. J'ai ajouté un exemple qui utilise des éléments html dans le sélecteur qui s'appliquera à tous les boutons de soumission sur la page. –

1

C'est parce que <%=btnAdd.ClientID%> est littéralement dans le fichier, ce n'est pas une balise de serveur évalué résultant en quelque chose comme container_btnAdd, au lieu donner le bouton une classe, comme ceci:

<asp:Button id="btnAdd" runat="server" CssClass="btnAdd" Text="Add" /> 

Ensuite, utilisez que classe dans votre sélecteur, de sorte que l'ID ne sera pas question, comme ceci:

$(function() { 
    $('.btnAdd').click({ code }); 
}); 
+0

En fait la classe css qui est utilisée dans le btnAdd la même classe est également utilisée dans d'autres boutons. Donc si je fais comme vous avez suggéré la fonction jquery tirera dans tous les boutons cliquez avec cette classe css.Pouvez-vous suggérer comment je vais éviter cela? – ANP

+0

@ANP - Vous pouvez lui donner plusieurs classes, par ex. 'CssClass =" class1 class2 class3 "' juste séparé avec un espace, vous pouvez utiliser n'importe laquelle de ces classes comme votre sélecteur, selon ce qui est unique, par exemple '$ (". Class2 ")' ne liera que ceux avec 'class2' . –