#javascript #jquery
#javascript #jquery
Вопрос:
Как я могу получить нажатую букву из входных данных и переместить эту букву на другой вход с помощью jquery? Но я хочу, чтобы она ПЕРЕМЕЩАЛАСЬ в другой, а не копировалась или что-то в этом роде. УДАЛИТЬ из исходного ввода и ПОМЕСТИТЬ в другой.
Например:
<input id="txt1" type="text">
<input id="txt2" type="text">
<script>
$('#txt1').on('input', function(evt) {
//get key pressed (txt1) and move to another input (txt2)
});
</script>
Ответ №1:
Вам нужно добавить ввод #txt1
к значению второго, а затем сохранить только начальное значение:
let len = $('#txt1').val().length;
$('#txt1').on('input', function(evt) {
if($(this).val().length < len){ //delete
len = $(this).val().length;
return;
}
let val1 = $(this).val();
if(val1.length > 1)
val1 = val1.charAt(val1.length-1);
let val2 = $('#txt2').val();
$('#txt2').val(val2 val1);
len = $(this).val().length-1;
$(this).val( $(this).val().substring(0,len) );
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.0/jquery.min.js"></script>
<input id="txt1" type="text" value="hello">
<input id="txt2" type="text">
Комментарии:
1. отлично, это работает.. но теперь у меня другой вопрос.. что, если исходный ввод уже имеет некоторое значение, я нажимаю другую клавишу и хочу, чтобы только эта последняя нажатая клавиша была перемещена на другой ввод, а не все в исходном вводе?
2. @Andre Я добавил этот случай к ответу. Вы хотите, чтобы начальное значение было удалено или его сохранили?
3. Я хочу сохранить начальное значение, просто переместите последний добавленный символ
4. @Andre Я обновил ответ. Удаление из начального значения также не влияет на добавление.
Ответ №2:
Проще всего использовать val(function)
который предоставляет текущее значение в обратном вызове
$('#txt1').on('input', function(evt) {
$('#txt2').val((_, v) => v this.value);
this.value = '';
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.0/jquery.min.js"></script>
<input id="txt1" type="text" value="hello">
<input id="txt2" type="text">