Javascript Fine uploader的自定义选择文件按钮部分无法识别单击
我正在实现类似于GooglePlus的上传窗口,当窗口中的整个灰色区域(一个div)可点击时,文件选择器就会出现。 这是一个简单化的模拟代码,我正在尝试做()Javascript Fine uploader的自定义选择文件按钮部分无法识别单击,javascript,jquery,fine-uploader,Javascript,Jquery,Fine Uploader,我正在实现类似于GooglePlus的上传窗口,当窗口中的整个灰色区域(一个div)可点击时,文件选择器就会出现。 这是一个简单化的模拟代码,我正在尝试做() $(函数(){ var fineupper=新的qq.FineUploader({ 元素:$(“#精细上传器容器”)[0], 按钮:$(“#可点击区域”)[0], 正文:{ 上传按钮:“点击我” }, 请求:{ 端点:'/example' }, 多重:假 }); }); 点击我 我发现了两个问题: 1) 我的“可点击区域”div的底部
$(函数(){
var fineupper=新的qq.FineUploader({
元素:$(“#精细上传器容器”)[0],
按钮:$(“#可点击区域”)[0],
正文:{
上传按钮:“点击我”
},
请求:{
端点:'/example'
},
多重:假
});
});
点击我
我发现了两个问题:
1) 我的“可点击区域”div的底部部分不可点击。
2) 我的“clickable area”div的css正在修改。尤其是位置属性被覆盖为“相对”。(这在JSFIDLE中并不重要,但在我的实际代码中更为必要)
有没有办法绕过这两个问题
请注意,这是(的延续),我要求将我的clickable area div设置为引用输入元素的标签。我个人仍然认为这是一种实现可定制按钮的更干净的方法
还要注意,我已经尝试让javascript捕获clickable area div的click事件,并让它单击输入元素。然而,当我尝试IE兼容性时,这是。如果我误解了您的要求,请道歉。我对你的代码做了一些修改,我相信我基本上达到了你的要求 uploader按钮上的click处理程序在FineUploader放置在其内部DOM中的文件
input
元素上被调用。通过扩展该元素以占据其父元素的整个空间,可以在更大的区域上注册单击
HTML
JS
我已经在最新的Chrome测试版和InternetExplorers 7-10中对此进行了测试。这里有一个对应的刚刚实现,我可以通过jquery向输入元素添加一个id。这使我能够使容器成为一个标签,这样它的css就不会被Fineuploader修改。(它还允许光标保持一致) 这是我的建议 HTML
<body>
<div class="window">
<label for="qqfile" id="container" class="container"></label>
</div>
<div id="fine-uploader-container"></div>
</body>
JS
这一半回答了我的问题-您可以单击容器div上的任意位置,它将打开文件选择器。另一半是覆盖css位置属性。另外,我注意到鼠标光标在容器div的顶部悬停时并不总是一个指针。有什么技巧吗?感谢您花时间看这个。正如我上面的回答所表明的,我决定用一种稍微不同的方法来解决我的问题。
<div class="container"></div>
<div id="fine-uploader">
</div>
</div>
.container { width: 500px; height: 500px; background-color: #ccc }
.container > input { width: 100%; height: 100% }
$(function () {
var fineupper = new qq.FineUploader({
element: $('#fine-uploader')[0],
button: $(".container")[0],
text: {
uploadButton: 'click me'
},
request: {
endpoint: '/upload/receiver'
},
multiple: false,
dragAndDrop: {
disableDefaultDropzone: true,
hideDropzones: false,
extraDropzones: [$(".container")[0]]
},
});
});
<body>
<div class="window">
<label for="qqfile" id="container" class="container"></label>
</div>
<div id="fine-uploader-container"></div>
</body>
.window {
position: relative;
width: 500px;
height: 500px;
background-color: #ccc;
}
.container {
position: absolute;
top: 0px;
bottom: 0px;
left: 0px;
right: 0px;
cursor: pointer;
}
.container:hover {
background-color: rgba(255, 255, 255, 0.4);
}
$(function () {
var fineupper = new qq.FineUploader({
element: $('#fine-uploader-container')[0],
text: {
uploadButton: ''
},
request: {
endpoint: '/example'
},
multiple: false
});
$('input[name="qqfile"]').attr('id', 'qqfile');
});