2009-08-24 5 views
2

En ce moment j'utilise Jeditable pour la fonctionnalité edit-in-place. Jeditable a quelques bonnes options, mais (pour autant que je sache), il ne vous permet pas de déclencher l'édition sauf en cliquant sur l'élément en question.jQuery edit in place plugin qui vous permet de déclencher l'édition à partir d'un autre élément

Par exemple, supposons que mon élément ait l'ID comment. Avec Jeditable, la seule façon de commencer à éditer est de cliquer sur comment. Ce que je voudrais, c'est mettre un petit texte à côté de comment (par exemple, "Cliquez pour modifier votre commentaire") qui, une fois cliqué, transformera comment en un champ de texte modifiable (et configurer les boutons Enregistrer et Annuler, etc).

Répondre

1

Vérifiez la méthode trigger de jQuery.

Utilisez le code comme:

$('#id-for-text').click(function(){ 
    $('#comment').trigger('click'); 
}); 
+0

la peine de noter que seul déclencheur est nécessaire lorsque vous avez des gestionnaires définis par l'utilisateur personnalisés. vous pouvez obtenir le même effet que ci-dessus si vous faites $ ("# commentaire"). click() –

+0

Mais j'ai encore besoin d'un moyen de faire réellement cliquer "commentaire" ne pas déclencher l'édition (ie, permettre de déclencher l'édition mode * SEULEMENT * lorsque l'utilisateur clique sur # id-for-text), n'est-ce pas? –

+0

Ajouter un $ ('# comment'). Unbind ('click') –

1

Sur la base de vos commentaires ci-dessus, vous pouvez le faire:

var editFn = (function(){ return $('#comment').click; })(); 
$('#id-for-text').click(editFn); 
$('#comment').unbind('click'); 

Ceci indique l'étiquette que l'événement click devrait être le même que l'événement click commentaire, puis dissocie l'événement sur le commentaire.

Vous ne savez pas si unbind va détruire la référence à editFn et donc inclure la fermeture.

+0

Malheureusement '$ ('# comment'). Unbind ('click')' ne semble pas fonctionner - le champ peut toujours être édité au clic. Même quand je fais '$ (" * "). Unbind()' c'est encore cliquable (bien que rien d'autre ne soit, comme prévu). Comment cela pourrait être possible? –

+0

Hmm la seule façon que je pourrais penser que c'est encore possible est si l'auteur du plugin utilisé .live() pour l'événement au lieu de .click(). pouvez-vous essayer d'utiliser ("#comment"). die ('click') au lieu de unbind et dites-moi comment cela fonctionne. Assurez-vous que le sélecteur est le même que passé au plugin jeditable. –

+0

Bizarre - ça ne marche toujours pas. Essayez http://www.appelsiini.net/projects/jeditable/default.html avec firebug. Même après avoir fait '$ (" * "). Unbind()' et '$ (" * "). Die()' vous pouvez toujours cliquer pour éditer. –

5

D'accord, j'ai cassé l'affaire. En this blog post, l'auteur écrit

Vous pouvez maintenant utiliser un événement personnalisé pour déclenchement Jeditable.

$(".editable").editable("http://www.example.com/save.php", { 
    event  : "make_editable" 
}); 

donc je l'ai fait et fait:

$("#id-for-text").click(function() { 
    $("#comment").trigger('make_editable'); 
    }); 
+0

bon travail! content que résolu pour vous. Tidbit utile aussi utile pour l'avenir :) –