1

我们有这种标记:

<a href="#">
   <input type="file" />
</a>

默认情况下,当您单击输入时,会出现“选择文件”窗口并且位置更改为“#”。如何防止浏览器更改位置?

我试过的:

//location still changes
$('input').bind('click', function (e) {
  e.stopPropagation();
});

//prevents "Select file" window
$('input').bind('click', function (e) {
  e.preventDefault();
});

//prevents "Select file" window 
$('a').bind('click', function (e) {
  e.preventDefault();
});
4

2 回答 2

1

尝试更改$(e)e.

e.preventDefault();

当做$(e).preventDefault()导致错误

Uncaught TypeError: Object [object Object] has no method 'preventDefault' 
于 2013-08-15T13:06:49.023 回答
0

您需要检查用户是否单击了a元素而不是输入文件。这应该有效。

$('a').click(function(e) {
    if ($(e.target).is('a')) {
        e.preventDefault();
    }
});

演示

于 2013-08-15T14:34:09.163 回答