我可以在表单输入[type =“file”]中单击一次来触发双击吗?

时间:2013-03-11 16:42:00

标签: javascript jquery css css3

我有一个表单input用于提交文件,我设计了它,因为我不喜欢原生风格。现在,我有一个按钮,当单击它时,它会打开对话框以选择文件。只需单击Firefox和Chrome即可正常工作,但在IE中无法正常工作。 按钮需要双击才能打开IE中的对话框。

我尝试使用jQuery单击一下来触发双击:

$("input").click(function() { 
    $(this).dblclick(); 
});

然而,它似乎不起作用。有没有其他方法可以触发IE的双击?

以下是演示:http://jsfiddle.net/HAaFb/

8 个答案:

答案 0 :(得分:3)

这样的事情:

var count=0;
$("input").click(function(e) { 
    count++;
    if(count==2){
         count=0;
    }else{
        e.preventDefault();
    }
});

样本: http://jsfiddle.net/HAaFb/1/

http://jsbin.com/ukotit/17/edit

答案 1 :(得分:3)

我发现jQuery文件上传演示页面实际上重新定位了文件输入字段(同时“隐藏”),以便“浏览”按钮位于“添加文件”按钮的区域内。因此,当您使用IE 8/9/10单击该按钮时,只需单击一下即可打开。

http://blueimp.github.io/jQuery-File-Upload/

在我看到的一个CSS中:

.fileinput-button input {
...
right: 0px;
...
transform: translate(300px, 0) scale(4);
}

答案 2 :(得分:2)

答案不是触发dblclick,而是用IE打开文件对话框......对吗?所以我认为解决方案是触发文件输入的点击(将被隐藏?)

$("#formId").find("input[type='file']").trigger('click');

在你的小提琴中,我这样做:

$("input").click(function() { 
    $('input[type="file"]').click(); 
});

我试试这个

$('input[type="file"]').hide().parent().append($('<span />').attr('class', 'filebutton').text('Upload'));
$(".filebutton").click(function() { 
    $('input[type="file"]').click(); 
});

使用此CSS

form {
    color:#666;
}
.filebutton {
    content:'upload';
    font:small-caps 15px Georgia;
    letter-spacing:1px;
    border-radius:10px;
    border:1px solid #eee;
    width:100px;
    padding:10px;
    margin:20px;
    text-align:center;
    position:absolute;
    left:0;
    top:0;
    z-index:1;
    background-color:#f8f8f8;
}

.filebutton:hover {
    background-color:#f3f3f3!important;
    color:#c00;
     cursor : pointer;
}

它有效......

答案 3 :(得分:1)

文件输入是IE中的本机/ ActiveX组件,因此不能对它们执行事件 - 对于选择输入也是如此。

你真的需要双击吗?

答案 4 :(得分:1)

我知道我可能迟到了这个派对,但万一其他人偶然发现了这篇文章,我能够解决类似的问题:

$("#uploadInput").bind('mousedown', function (event) {
    $(this).trigger('click')
});

使用IE10和&amp; IE11。

答案 5 :(得分:0)

$("input").click(function() { 
    $(this).trigger('dbclick');
});

答案 6 :(得分:0)

我没有检查过这个,但我想你需要使用这样的东西:

$('input').on('click', function() {
  $(this).trigger('dblclick');
});

我希望那不是傻瓜,哈哈。

答案 7 :(得分:0)

这是你的CSS ...如果你在IE中禁用不透明度和剪辑内容,你会看到实际的浏览按钮在右边。

确保IE9中没有使用过滤器:不透明度,那个适用于我。 JSFiddle在IE7 / 8中不起作用,所以我无法测试它们。