Как изменить атрибут VALUE поля <input> в реальном времени с помощью JavaScript?

Я хочу изменить значение поля Вход в реальном времени, когда пользователь вводит другое поле Вход, желательно с использованием обычного JS, а не JQuery.

Пример: Пользователь вводит случайное значение в # input_1, и в ТО ЖЕ ВРЕМЯ # input_2 получает все, что вводит пользователь, и устанавливает его на свое значение.

Если пользователь удаляет число из значения # input_1, # input_2 следует за ним и удаляет то же число из его значения.

Все это в реальное время и предпочтительно без нажатие кнопки для курок функции, которая это делает.

Вы это гуглили?

Yaakov Ainspan 18.12.2018 18:36

@YaakovAinspan Пытался, но не нашел ничего подходящего.

PolarDog 18.12.2018 18:38
inp1.oninput=x=>inp2.value=inp1.value;
dandavis 18.12.2018 18:38
jsfiddle.net/yak613/dn6h0fre Это заняло у меня меньше минуты :)
Yaakov Ainspan 18.12.2018 18:38

Без захвата нажатия кнопки единственным способом было бы использовать тайм-аут / интервал. Это было бы намного менее эффективно.

James 18.12.2018 18:39

@james, это неправда.

Yaakov Ainspan 18.12.2018 18:40

@YaakovAinspan Я считаю, что любые события типа oninput и onkeyup фиксируют нажатие кнопки.

James 18.12.2018 18:41

@James Я думаю (почти уверен), что OP имеет в виду нажатие кнопки как нажатие на элемент button.

Yaakov Ainspan 18.12.2018 18:42

@YaakovAinspan Я с уважением не согласен. Я думаю, они имеют в виду нажатие на клавиатуру.

James 18.12.2018 18:42

@PolarDog что ты скажешь?

Yaakov Ainspan 18.12.2018 18:43

Вопрос @James говорит, что "пользователь вводит input1" ... используя что? Не клавиатура?

Yaakov Ainspan 18.12.2018 18:43

@YaakovAinspan Может ты и прав! Они не упоминают кнопку в html, но это тоже может означать.

James 18.12.2018 18:46

@PolarDog, вы должны показать нам, что вы пробовали, пожалуйста, прочтите этот stackoverflow.com/help/mcve

Nikhil Kinkar 18.12.2018 18:51
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
13
1 489
3

Ответы 3

Есть много способов реализовать это. Вот как бы я это сделал:

HTML:

<input id = "sourceField" />
<input id = "destinationField" />

JS:

// When the page is done loading and rendering...
window.addEventListener('DOMContentLoaded', ()=>{
    // Get the appropriate elements
    const sourceField = document.getElementById('sourceField')
    const destinationField = document.getElementById('destinationField')

    // When the user types some input into the first text field...
    sourceField.addEventListener('input', ()=>{
        // Set the value of the destination field to the value of the source field.
        destinationField.value = sourceField.value
    })
})

Вы необходимостьDOMContentLoaded? Пока он ниже элемента, все должно быть в порядке

Yaakov Ainspan 18.12.2018 18:40

@YaakovAinspan Вы правы, но мы не знаем, куда OP поместит этот JS, поэтому я предпочитаю включить его.

RobertAKARobin 18.12.2018 18:41

Я бы добавил это на саму страницу, если вы это имеете в виду. Не в отдельном файле .js.

PolarDog 18.12.2018 18:42

@PolarDog Независимо от того, находится ли ваш JS в отдельном файле или встроен в ваш HTML, если загружающий его элемент <script> идет после элементов <input> в вашем HTML, вам не нужен DOMContentLoaded. Но мне нравится помещать элементы <script> в <head> моего HTML.

RobertAKARobin 18.12.2018 18:45

Я держу его под <head>, но над <body>.

PolarDog 18.12.2018 18:47

Что бы ни плавало на вашей лодке, просто будьте последовательны. Кроме того, если вы поместите его в свой <head> и загрузите из внешнего файла, вы можете использовать новый атрибут defer для достижения того же эффекта.

RobertAKARobin 18.12.2018 18:49

Легкий ;)

<input id = "input1" onkeyup = "document.getElementById('input2').value=this.value" />
<input id = "input2" />

Это, безусловно, сработает, но в целом рекомендуется не использовать встроенные атрибуты Javascript. Это способствует повторению кода и размывает разделение проблем.

RobertAKARobin 18.12.2018 18:50

@RobertAKARobin Зависит от использования, чувак;)

Vixed 19.12.2018 08:08

ты можешь сделать это вот так

Вам нужно выбрать первый вход (по событию) и взять значение из этого входа и обновить во втором.

function handle(e){
  var input1 = document.getElementById('input1').value;
  console.info(input1)
  document.getElementById('input2').value = input1;
}
<input id='input1' onkeyup = "handle()" value = ""/>
<input id='input2'  value = "" />

Другие вопросы по теме