2015-08-26 5 views
0

Как изменить текст динамически. SO, когда я дважды щелкаю по тексту, он появляется во входе, и я могу просто очистить текст и написать другое.Как изменить динамический текст с помощью JQuery

Вот мой исходный код Jsfiddle

<div id="main_text"> 
    <h1>Change Text</h1> 
</div> 



$('.main_text').dblclick(function(){ 
    var val = $("#main_text").value(); 

}); 
+0

Что вы имеете в виду под "появляются на входе"? Неясно, что вы нажимаете и что нужно изменить. – Mifeet

+0

Вы имеете в виду 'contentEditable =" true "'? Пожалуйста, ясно, что вы хотите – Andre

+0

Да contentEditable = "true" - это то, что мне нужно, спасибо – Viktor

ответ

2

Нечто подобное может помочь вам:

$('#main_text').dblclick(function(){ 
 
    var $elm = $(this); 
 
    
 
\t $elm.find("h1").replaceWith($("<input />", { 
 
    \t val: $elm.text(), 
 
     change: function(){ 
 
      var text = $(this).val(); 
 
      
 
     \t $elm.html($("<h1 />", { 
 
      \t text: text 
 
      })); 
 
     } 
 
    })); 
 
    
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<div id="main_text"> 
 
    <h1>Change Text</h1> 
 
</div>

Рабочий пример: http://jsfiddle.net/006853mL/1/

1

Это должно сделать трюк:

Edit: я добавил KeyListener. Если вы нажмете Enter, он применит изменения.

$('#main_text').dblclick(function() { 
 
    var currentText = $(this).children('h1').text(); 
 
    $(this).children('h1').replaceWith('<input class="change" type="text" value="' + currentText + '"/>'); 
 
    $('.change').keyup(function(e) { 
 
    if (e.keyCode == 13) { 
 
     var currentText = $('.change').val(); 
 
     $(this).replaceWith('<h1>' + currentText + '</h1>'); 
 
    } 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="main_text"> 
 
    <h1>Change Text</h1> 
 
</div>

Смежные вопросы