2011-10-14 3 views
1

J'ai une mise en page simple avec un TextBlock et un <a>, comme:Texte jQuery à saisir?

text1 edit

Lorsque je clique sur le <a>, je veux que ce textblock devienne saisie de texte. Comment est-ce possible avec jQuery?

+0

J'ai répondu à une question similaire, jetez un oeil à: http://stackoverflow.com/a/28360984/442883 – rsa

+0

J'ai répondu à une question similaire, jetez un oeil à: http://stackoverflow.com/a/28360984/442883 – rsa

Répondre

2

Utilisez jQuery replaceWith():

$(document).ready(function(){ 
    $("a").click(function(e){ 
     e.preventDefault(); 
     $(this).parent().replaceWith("<input />"); 
    }); 
}); 

http://jsfiddle.net/Dqkyg/1/


De plus, vous pouvez remplir la zone de texte avec le texte en dehors du lien comme ceci:

$(document).ready(function(){ 
    $("a").click(function(e){ 
     e.preventDefault(); 
     var txt = $(".text").html(); 
     $(".text").replaceWith("<input value='" + txt + "' />"); 
    }); 
}); 

http://jsfiddle.net/Dqkyg/5/


qui suit remplacera le modifier avec Save & Annuler Options:

<div> 
    <span class="text">testing</span> <a href='#'>test</a> 
</div> 

$(document).ready(function(){ 
    $("a").click(function(e){ 
     e.preventDefault(); 
     var txt = $(".text").html(); 
     $(".text").replaceWith("<input value='" + txt + "' />"); 
     $(this).replaceWith("<a href='#'>Save</a> | <a href='#'>Cancel</a>"); 
    }); 
}); 

http://jsfiddle.net/Dqkyg/6/

+0

On dirait qu'il veut remplacer le bloc entier, pas seulement le 'a' (' $ (this) .parent(). Replace (''); ' ?) – Matt

+0

.replace ???? –

+0

Cheers @Matt, script corrigé – Curt

2

Il y a beaucoup de plug-ins que vous pouvez utiliser ... Pas besoin de réinventer la roue

http://www.appelsiini.net/projects/jeditable

+0

bien sûr, mais il est parfois plus facile d'écrire trois lignes de code. –

+0

@llya ouais mais cela n'inclut pas le code pour enregistrer l'entrée et le renvoyer au serveur pour persister (en supposant que vous voulez faire cela ....que vous faites probablement) – calumbrodie

1

Hmm ... ur un peu pas clair ... mais http://jsfiddle.net/mMYrf/4/

<div class="dataGrid"> 
    <span>test</span> 
    <a href="#">edit</a> 
</div> 

Et

$('.dataGrid a').click(function(e) { 
     e.preventDefault(); 

     var EditGrid = $(this).parent().children('span'); 
     var DataTxt = EditGrid.text(); 
     var InputHtml = '<input type=text" value="'+DataTxt +'" />'; 

     $(this).text('Save?'); 
     EditGrid.html(InputHtml); 
}); 
+1

Quel est le problème avec votre jsfiddle? cela n'appartenait pas à cette question. – kst

+0

Nice emploi jsfiddle: D –

+0

Hahhaa .. Pwned par soi-même! :( –

1
<div class="editable">This is the content.</div> 
<script type="text/javascript"> 
    $(function() { 
     $('.editable').each(function() { 
      var a = $('<a href="#">edit</a>'); 
      (function(link, parent) { 
       link.click(function() { 
        link.remove(); 
        var textField = $('<textarea/>').val(parent.html()); 
        parent.replaceWith(textField); 
        delete parent, link; 
       }); 
      })(a, $(this)); 
      $(this).append(" ").append(a); 
     }); 
    }); 
</script> 

Exemple de travail: http://jsfiddle.net/BnH29/

Questions connexes