Вот один из способов сделать это, его можно легко изменить, чтобы он работал с указанными c текстовыми вводами, но, как есть, это гарантирует, что каждый ввод текста на странице получает одинаковые данные из буфера обмена.
Примечание: querySelectorAll
возвращает nodelist
вместо массива, вы можете использовать [].forEach.call
, чтобы использовать метод массива forEach
в nodelist
.
// Listen to paste on the document
document.addEventListener("paste", function(e) {
// if the target is a text input
if (e.target.type === "text") {
var data = e.clipboardData.getData('Text');
// split clipboard text into single characters
data = data.split('');
// find all other text inputs
[].forEach.call(document.querySelectorAll("input[type=text]"), (node, index) => {
// And set input value to the relative character
node.value = data[index];
});
}
});
<input type="text" maxlength="1">
<input type="text" maxlength="1">
<input type="text" maxlength="1">
<input type="text" maxlength="1">
<input type="text" maxlength="1">
<input type="text" maxlength="1">