Некорректно работает событие Paste

113
23 ноября 2020, 01:30

Если вставить текст первый раз, то событие не проходит, а если второй то всё нормально.

$(document).on("paste", 'input[name=create--post--youtube]', function(e) { 
  var url = $('input[name=create--post--youtube]').val(); 
  console.info(url); 
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> 
<input class="form-control" placeholder="" name="create--post--youtube" type="text" autocomplete="off">

Answer 1

Потому что paste срабатывает еще до того, как значение инпута изменено. В зависимости от задачи, если не принципиально - можно использовать 'input' вместо 'paste'. Но он будет каждый раз срабатывать и при вводе любых символов.

А с paste будет так:

$(document).on("paste", '#create--post', function(e) { 
  var url = e.originalEvent.clipboardData.getData('Text'); 
  console.info(url); 
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> 
 
<input id="create--post" class="form-control" placeholder="" name="create--post--youtube" type="text" autocomplete="off">

Answer 2

$('input[name=create--post--youtube]').on("paste", function() { // ;(document).on(... если элемент добавлен динамически 
  setTimeout(function () { 
    var url = $('input[name=create--post--youtube]').val(); 
    console.info(url); 
  }, 100); 
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> 
<input class="form-control" placeholder="" name="create--post--youtube" type="text" autocomplete="off">

READ ALSO
Программа виснет после вызова метода while(true)

Программа виснет после вызова метода while(true)

Решил я программу написать которая выводит время и каждую 1 секунду обновляет форму Label1 но вот случилась проблема, после вызова while true программа...

105
Передать Geometry Group в VM

Передать Geometry Group в VM

У меня есть такой код формы

144