我正在使用带有jQuery的AjaxUpload插件,并且大多数情况下一切正常,但我必须单击我的按钮两次才能执行它。我猜这是一个范围问题......或者(?)还在学习......
这是我的代码:
$(".upload-button").live("click", function(event) {
event.preventDefault();
var currentId = $(this).closest("div").attr("id").replace("slide-", "");
new AjaxUpload($(this), {
action: "./php/upload.php",
name: 'userfile',
autoSubmit: true,
onSubmit: function(file , ext) {
},
onComplete: function(file, response) {
// enable upload button
// this.enable();
$("#slide-" + currentId).find(".movie-image").attr("src", baseImgPath + file);
$("#mImg" + currentId).val(file);
}
});
任何想法都表示赞赏。 :)
答案 0 :(得分:2)
搞定了 - 这是其他任何人可能遇到类似问题的方法......
主要问题是这些按钮是动态创建的,并且AjaxUpload最初不会在.live()调用中绑定,因此“点击,移动,再次点击,触发”。
通过调用AjaxUpload(包含在它自己的函数中,如下所示),在我的循环中创建按钮时,它们最初被绑定,并且正常运行。
循环中使用的行:
makeUpButton(("#upload-button-" + slideCount), slideCount);
AjaxUpload调用:
function makeUpButton(theButton, theId) {
new AjaxUpload(theButton, {
action: "./php/upload.php",
name: 'userfile',
autoSubmit: true,
onSubmit: function(file , ext) {
this.disable();
},
onComplete: function(file, response) {
this.enable();
$("#slide-" + theId).find(".movie-image").attr("src", baseImgPath + file);
$("#mImg" + theId).val(file);
}
});
}
希望这有助于某人,我知道这让我疯了几天。 ;) 欢呼声。
答案 1 :(得分:2)
试试这个:
$(".upload-button").live("hover", function(event) {
var currentId = $(this).closest("div").attr("id").replace("slide-", "");
new AjaxUpload($(this), {
action: "./php/upload.php",
name: 'userfile',
autoSubmit: true,
onSubmit: function(file , ext) {
//onsubmit code here..
},
onComplete: function(file, response) {
// oncomplete code here
}
});
$(this).trigger('click');
});
我开始工作,但我不确定它是如何工作的。 'hover'(而不是'click')将创建一个新的AjaxUpload(这将阻止它点击两次)答案 2 :(得分:2)
如果要创建动态按钮,则需要使用每个按钮的ID创建一个AjaxUpload,试试这个:
// to add new button
$("#add_sector").click(function() {
var ID = [Generate a new ID];
var button = '<a href="javascript:;" id="' + ID + '" class="subir_imagen"><img src="images/icon_subir32.png"></a>';
$('#cont_img_catalogo').append(button);
//create Ajax
new AjaxUpload($('#' + ID ),{
action: 'procesar_imagen.php',
name: 'image',
onSubmit : function(file, ext){
// desabilitar el boton
this.disable();
...
},
onComplete: function(file, response){
// Habilitar boton otra vez
this.enable();
...
}
});
});
删除按钮使用:
$('#' + ID).fadeOut("slow", function() { $('#' + ID).remove(); });
如果您使用img,则需要班级
a, a:visited{
display: block;
float: left;
text-decoration:none;}
答案 3 :(得分:0)
试试这个:
var $button = $(".upload-button");
new AjaxUpload($button, {
action: "./php/upload.php",
name: 'userfile',
autoSubmit: true,
onSubmit: function(file , ext) {
},
onComplete: function(file, response) {
// enable upload button
// this.enable();
var currentId = $(this).closest("div").attr("id").replace("slide-", "");
$("#slide-" + currentId).find(".movie-image").attr("src", baseImgPath + file);
$("#mImg" + currentId).val(file);
}
});
答案 4 :(得分:0)
<script type="text/javascript">
$(document).ready(function() {
$('#yourlinkorbutton').click(function(){
new AjaxUpload('#yourlinkorbutton'),{
....
});
});
$('#yourlinkorbutton').trigger.click();
$('#yourlinkorbutton').trigger.click();
});
在页面加载时会让你两次点击。从那里点击一下。
答案 5 :(得分:0)
如果您使用动态控制,那次我们在两次点击时遇到问题,我已经解决了它对我有用。 我花了两天时间解决这个问题,请检查以下步骤:=
在php循环中为每个使用下面的
添加java脚本加载函数<?php
for ($i=1; $i<=5; $i++)
{
?>
<script>
$(window).load(function ()
{
uploadphoto(<?php echo $i; ?>)
});
</script>
<a href="javascript:void(0)" id="photo<?php echo $i; ?>" onclick="uploadphoto(<?php echo $i; ?>)" style="color: #666;"> Upload </a>
<?php
}
?>
和您的javascript文件,您可以从php循环
获取动态IDfunction uploadphoto(id)
{
new AjaxUpload('#photo'+id, {
所以,你可以在样本行上方传递动态ID,就是它:)快乐编码