Динамически изменить текст абзаца с помощью jQuery?
Я хочу взять информацию, введенную в текстовое поле, и отобразить ее в параграфе в другом месте на странице. В принципе, именно то, что происходит ниже, когда я набираю это (отправляйте вопрос и начинайте вводить текст в основном текстовом поле, и вы поймете, что я имею в виду).
Есть идеи, как это сделать? На странице столько JavaScript, что я не могу найти, как они это сделали.
Ответы
Ответ 1
Я думаю, вы ищете это.
Вот как выглядит ваш html:
<textarea id="txt" style="width:600px; height:200px;"></textarea>
<p id="preview"></p>
И jQuery:
$(function(){
$('#txt').keyup(function(){
$('#preview').text($(this).val());
});
});
Это захватывает значение textarea
в событии keyup
, а затем текст абзаца изменяется (метод text()
) с textarea
$(this).val()
.
Ответ 2
Я бы использовал что-то вроде keyup и обновлял отображение при каждом выпуске ключа. Вам также может потребоваться обработать событие изменения, если кто-то вставляет что-то в поле.
<div id="container">
<textarea id="textfield"></textarea>
<p id="displayArea"></p>
</div>
<script type="text/javascript">
var display = $('#displayArea');
$('#textfield').keyup( function() {
display.text( $(this).val() );
}).change( function() {
display.text( $(this).val() );
});
</script>
Кроме того, вы можете посмотреть редактор WMD, что и использует SO. Он делает больше, чем вы просите, но вы могли бы получить от него некоторые идеи.
Ответ 3
Вот пример, который должен просто работать -
<html>
<head>
<style>
#typing{background-color:;}
#display{background-color:#FFEFC6;}
</style>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js"></script>
</head>
<body>
<div id="typing">
<input type="text" name="typing" value="" id="typing_input" style="height:100px;width:300px;">
</input>
</div>
<div id="display">
<p id="typing_display"></p>
</div>
<script type="text/javascript" charset="utf-8">
$(document).ready(function()
{
$('#typing_input').bind("keypress keydown", function(event) {
$('#typing_display').text($('#typing_input').attr("value"));
});
});
</script>
</body>
</html>
Извините за дополнительные стили - не могу помочь себе. Jquery.change() не изменится до тех пор, пока не будут запущены разные события .live() и . Bind() - это то, что вы хотите. Там также часть .attr( "value" ), которая иногда делает дополнительную магию, которую я не совсем понимаю, но она не обновляется. Удачи!