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