我想在下拉框中选择一个选项,为此触发可用于jQuery的uploadify,允许您上传文件。
我的解决方案适用于IE7但不适用于FF。
当您更改下拉列表时,它应显示一个窗口以浏览要上载的文件。在FF中没有出现。在IE中一切正常。
在FF中启用了JS,如果我插入警报消息,它就会触发点击输入按钮。
<select class="selectLogoTop" name="selectLogoTop">
<option value="0">0</option>
<option value="1">1</option>
</select>
<input class="fileupload1" type="file" />
<script type="text/javascript">
$(document).ready(function() {
$('.fileupload1').uploadify({
'uploader' : '../../../admin/uploadFileResources/uploadify.swf',
'script' : '../../../admin/uploadFileResources/upload.cfm',
'cancelImg' : '../../../admin/uploadFileResources/cancel.png',
'folder' : '../../../upload_BE/offers/htmlfiles/5953/images/',
'multi' : true
});
$('.selectLogoTop').change(function(){
$('.fileupload1').trigger("click");
});
});
</script>
答案 0 :(得分:1)
根据this question,不可能通过设计触发对文件输入的点击(由于安全问题)。虽然它在Chrome中可行,但我在Firefox(以及Opera)上也没有运气这个代码。
<select class="selectLogoTop" name="selectLogoTop">
<option value="0">0</option>
<option value="1">1</option>
</select>
<input class="fileupload1" type="file" />
<script type="text/javascript">
$(document).ready(function() {
$('.selectLogoTop').change(function(){
$('.fileupload1').trigger("click");
});
});
</script>
为什么需要通过链接触发文件输入?如果是由于可以应用于输入的样式有限,则在另一个问题上提到了this article。
此外,可能没有相关性,但是上传文档说,您需要为文件输入提供唯一的ID。你的只有一个班级。
Uploadify的每个元素都是 申请必须有一个唯一的ID 属性。您可以参考元素 通过类,但每个元素必须有 一个唯一的ID。
答案 1 :(得分:0)
这在Firefox中是不可能的。但是,请看一下Ramas在回答同一问题时给出的整洁的解决方法:
In JavaScript can I make a "click" event fire programmatically for a file input element?
抱歉,知道它不能做你想做的事!
这是我在这种情况下要做的事情:
替换您的代码行:
$('.fileupload1').trigger("click");
由:
$('.fileupload1').fadeOut(300).delay(100).fadeIn(300, function(){$(this).focus().trigger("click")});
这将导致INPUT元素闪烁(您可以将其修改为闪烁几次)并且它将获得焦点,通过更改其颜色在Firefox中突出显示它。以这种方式(假设它靠近SELECT框),用户将看到他需要按下INPUT元素的“BROWSE”按钮。我知道这不是完美的,但它是一个可行的软糖。
请参阅以下示例:
此致 尼尔