jQuery on(“粘贴”)第一次没有';t获取或传递值

jQuery on(“粘贴”)第一次没有';t获取或传递值,jquery,onpaste,Jquery,Onpaste,这对我来说是一个真正的问题,因为我没有解决它的线索 我编写的jQuery脚本应该获取“粘贴”操作的输入值,并通过ajax将其传递给codeigniter控制器 它实际上工作得很好,但前提是我第二次(以及以后)粘贴该值。当我将某个div或其他DOM元素的on(“粘贴”)更改为on(“单击”)时,它也可以正常工作 脚本: <script type="text/javascript"> $("#link").on("paste", function(){ $("#thumbs").empt

这对我来说是一个真正的问题,因为我没有解决它的线索

我编写的jQuery脚本应该获取“粘贴”操作的输入值,并通过ajax将其传递给codeigniter控制器

它实际上工作得很好,但前提是我第二次(以及以后)粘贴该值。当我将某个div或其他DOM元素的on(“粘贴”)更改为on(“单击”)时,它也可以正常工作

脚本:

<script type="text/javascript">
$("#link").on("paste", function(){
$("#thumbs").empty().html("<p>loading</p>");
var postData = {
  'url' : $("#link").val()
 }; 

 $.ajax({
     type: "POST",
     url: "/thumb/ajax/",
     data: postData , //assign the var here 
     success: function(msg){
    $("#thumbs").html( "Data Saved: " + msg );
     }

});

$(“#链接”)。在(“粘贴”,函数()上){
$(“#拇指”).empty().html(“加载”

”; var postData={ 'url':$(“#link”).val() }; $.ajax({ 类型:“POST”, url:“/thumb/ajax/”, data:postData,//在此处分配变量 成功:功能(msg){ $(“#拇指”).html(“保存的数据:+msg); } });
}));

任何帮助都将不胜感激

编辑:还有一个提示

在这个特定脚本中,val()实际上在粘贴操作之前获取值。 如果我向这个输入中写入一些内容,然后将其删除并粘贴其他内容,它实际上会将我写入的值传递给控制器,而不是我粘贴的值

编辑2: 好的,我很确定这就是粘贴的jQuery问题

<script type="text/javascript">

    $("#link").on("paste", function(){
        $("#thumbs").empty().html("<p>loading</p>");
        var postData = {'url' : $("#link").val() }; 
        $("#thumbs").html($("#link").val());
    });


</script>

$(“#链接”)。在(“粘贴”,函数()上){
$(“#拇指”).empty().html(“加载”

”; var postData={'url':$(“#link”).val(); $(“#thumbs”).html($(“#link”).val()); });
此脚本应将输入值添加到div#thumbs。对于第一次粘贴操作,它不起作用。第二,它实际上起作用了


我的朋友给了我一个提示。on(“粘贴”)在“粘贴”操作上和粘贴实际完成之前起作用。如果有人告诉我如何在粘贴后超时获取值,我可以继续操作。

在这里效果很好

更新:

为了将对象发送到服务器,您必须对对象进行字符串化,包括您的代码

$("#link").on("paste", function(){
$("#thumbs").empty().html("<p>loading</p>");
var postData = {   'url' : $("#link").val(),   'test' : 'testtest'  };

     $.ajax({
         type: "POST",
         url: "your/url",
         data:JSON.stringify(postData),
         success: function(msg){
        $("#thumbs").html( "Data Saved: "  );
         }        
        });
      }); 
$(“链接”)。在(“粘贴”,函数()上{
$(“#拇指”).empty().html(“加载”

”; var postData={'url':$(“#link”).val(),'test':'testtest'}; $.ajax({ 类型:“POST”, url:“您的/url”, 数据:JSON.stringify(postData), 成功:功能(msg){ $(“#拇指”).html(“保存的数据:”); } }); });
下面是一个例子,我已经包括了解决的问题中的
json2.js

正如我之前所说,“on(“粘贴”)”操作是在实际粘贴上正确执行的。因此,函数是在值粘贴到输入之前完成的。这是因为第一次粘贴获取并传递输入的默认值(在我的示例中为null)

解决方案是设置超时。正确的代码看起来是这样的,并且工作正常

$("#link").on("paste", function(){

setTimeout(function() {
    $("#thumbs").html("<p>loading</p>");
    var postData = {
      'url' : $("#link").val()
      };
    $.ajax({
         type: "POST",
         url: "/thumb/ajax/",
         data: postData , //assign the var here 
         success: function(msg){
        $("#thumbs").html( "Data Saved: " + msg );
            $(".thumb").click(function(){
            (this).attr('id');


        });

         }

    });
}, 500);
$(“链接”)。在(“粘贴”,函数()上{
setTimeout(函数(){
$(“#拇指”).html(“加载”

”; var postData={ 'url':$(“#link”).val() }; $.ajax({ 类型:“POST”, url:“/thumb/ajax/”, data:postData,//在此处分配变量 成功:功能(msg){ $(“#拇指”).html(“保存的数据:+msg); $(“.thumb”)。单击(函数(){ (本协议)属性(“id”); }); } }); }, 500);
}))


问题解决了,感谢@3nigma的支持。

我最终使用了“oninput”,除非您需要支持IE8或以下版本,否则它可以正常工作。

根据sznowicki找到的解决方案,它使用setTimeOut工作

我的例子是:

$("#search-product").on("paste", function(){
    let $element = $(this);
    setTimeout(function(){
        search($element)
    },0);
});

谢谢大家!

我更深入了,向postData添加了一个对象,现在看起来像这样:var postData={'url':$(“#link”).val(),'test':'testtest'};在第一次粘贴时,只有“测试”传递给控制器,[url]为空。我不知道有什么问题,我为什么要这么做?如果我把“粘贴”改为“点击”,每次都可以正常工作。它以正确的方式将输入值传递给控制器。如果我错了,请纠正我。那么你所面临的问题是什么?我无法理解这里是第二次粘贴的脚本示例。我希望我在一小时前看到这篇文章。Jquery我可以把你刚才浪费的那一小时还给我吗^^^你应该可以在超时设置为0的情况下这样做。