2010-11-15 7 views
1

Je suis un peu confus il semble ici. Ce que j'essaie de faire est de créer une fonction Javascript qui désactive toutes les entrées sur une page, puis une fonction qui active toutes les entrées sur une page.Fonction jQuery appelée par fonction JavaScript générique

C'était assez facile avec jQuery. Ma question est, comment puis-je envelopper ces fonctions jQuery dans une fonction JS traditionnelle? La raison pour laquelle je dois faire cela est parce que j'appelle ces fonctions en utilisant ActionScript. Autrement dit, je ne comprends pas comment je peux écrire du code jQuery, puis l'appeler de manière traditionnelle en appelant la fonction Javascript.

fonctionne très bien, mais il est pas enveloppé dans une fonction ...

$(document).ready(function() { 
    $(':input').attr('disabled', "disabled"); 
}); 

Enveloppé dans une fonction et ne fonctionne pas du tout, ce que je fais mal ici ??

function init_lock_test(){ 
    $(':input').attr('disabled', "disabled"); 
} 
+2

Que voulez-vous dire par là que cela ne fonctionne pas? Quand/comment appelez-vous 'init_lock_test'? –

+1

En fait, votre premier exemple/est/écrit dans une fonction. La fonction est ajoutée à la méthode ready() de JQuery, qui ajoute la fonction à la liste des fonctions à exécuter automagiquement une fois le chargement du document terminé. Je suis sûr que vous n'appelez pas votre méthode 'init_lock_test()', ce qui signifie que la méthode réelle n'est pas exécutée non plus. – fwielstra

Répondre

5

Vous ne pouvez pas directement appeler des fonctions JavaScript dans une page Web à partir d'ActionScript, et il n'y a aucune chose particulière en tant que « fonction jQuery. » Vous devriez être using ActionScript's ExternalInterface pour appeler indirectement la fonction JavaScript:

import flash.external.ExternalInterface 

// Calls the function init_lock_test 
ExternalInterface.call("init_lock_test"); 
+0

Je connais bien la classe ExternalInterface, j'essaie juste d'écrire une fonction javascript qui peut être appelée par la fonction. Le problème que j'ai est que je n'ai pas une forte expérience en javascript et jquery. Donc, cela ne répond pas vraiment à ma question. – Ryan

+0

@Ryan. Comment cela ne répond pas à votre question. Je suis sûr que son code fonctionnera s'il est entouré de votre code jquery avec un 'functon init_lock_test() {...}' Si ça ne marche pas, écris exactement ce qui se passe. –

1

Personnellement, j'éviter d'utiliser jQuery pour cela, car il est pas vraiment nécessaire: p
Essayez ceci:

function lockInputs(lock) { 
    var tags, elems, i, j; 
    tags = ['input','button','textarea']; 
    for(i=0; i<tags.length; i++) { 
     elems = document.getElementsByTagName(tags[i]); 
     for(j=0; j<elems.length; j++) { 
      if(lock) elems[j].setAttribute("_lock",elems[j].disabled); 
      elems[j].disabled = lock || elems[j].getAttribute("_lock"); 
     } 
    } 
} 

Cela devrait désactiver tous les champs d'entrée avec lockInputs (true); et les réactiver avec lockInputs (false);
Il enregistre également l'état désactivé, donc tous ceux qui ont été désactivés pour commencer à rester ainsi.
HTH!

+0

Vous ne voulez pas que 'select' soit verrouillé? – alex

+0

Missed that one: p Merci de l'avoir signalé –

+0

Cela fait beaucoup de code pour une requête simple. Et vous allez dupliquer la logique chaque fois que vous avez besoin de quelque chose comme ça. Je n'aime pas injecter jquery dans les questions, mais cela a été étiqueté comme jquery, pas besoin d'une solution moins élégante. –

0

Habiller jquery dans une fonction js traditionnelle est vraiment aussi simple que votre fonction init_lock_test. Vous devez avoir un problème avec l'appel de votre fonction à partir d'ActionScript. Essayez ceci pour vérifier:

$(document).ready(function() { 
    init_lock_test(); 
}); 
+0

ou simplement, '$ (init_lock_test)' –

Questions connexes