Основная проблема заключается в том, что при использовании нажатия клавиши вы получаете значение поля ввода, прежде чем он установлен, так что ничего не появляется. Однако, даже если вы измените его на keyup
, вы все равно получите только одно значение, потому что после замены «образца» оно исчезнет, поэтому его нельзя заменить снова.
Необходимо учитывать новую логику, если вы хотите заменить образец на полное значение текстового поля. Рассмотрим следующий пример:
$("#add").click(function() {
$('#txtArea').val($('#txtArea').val().replace('sample', $("#textbox").val()));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="textbox" /><br>
<input type='button' id='add' value='add'>
<textarea id="txtArea">This is a sample test.</textarea>
Или заменить, когда пользователь прекратил печатать
var typing;
$("#textbox").keyup(function() {
// Stop the change from being made since they typed again
clearTimeout(typing);
// They typed, so set the change to queue up in a 3rd of a second
typing = setTimeout(function(){
$('#txtArea').val($('#txtArea').val().replace('sample', $("#textbox").val()));
},350);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="textbox" /><br>
<textarea id="txtArea">This is a sample test.</textarea>
Это может быть опечатка, ваш звонок, чтобы получить значение текстовой области, не ищет его по идентификатору. Попробуйте '$ (# txtArea) .val();' – chRyNaN