我不知道我做错了什么。我已经找到修复/黑客,但它们似乎都没有工作。 尝试使用单个按钮/图像(某物)而不是输入文件控件。到目前为止它除了在Internet Explorer中工作。即出现“选择文件”对话框,让您选择一个文件,随附的文本框将被填充,但更改事件不会触发。 我已经尝试过焦点,模糊,生活,onpropertychange,更改,onchange ......但它们只是不起作用。有什么帮助吗?
jQuery的:
$(function() {
var a = $('a.#LinkUpload');
var f = $('input.#file');
a.click(function() {
f.click();
});
f.change(function() {
alert('changed!');
});
});
HTML:
<body>
<form action="">
<div>
<a id="LinkUpload">Click Me!</a>
<input type="file" id="file" name="file" />
</div>
</form>
</body>
答案 0 :(得分:0)
var $a = $('#LinkUpload'),
$b = $('#file');
在缓存jQuery对象时,在变量名中添加$(美元符号)也是一种很好的做法,这样您就知道变量实际上是一个jQuery对象。
答案 1 :(得分:0)
知道了! (我想)。
$(function() {
var a = $('#LinkUpload');
var f = $('#file');
a.click(function() {
f.click();
setTimeout(function() {
f.val(f.val());
}, 1);
});
if ($.browser.msie && $.browser.version < 9) {
f.bind('propertychange', function() {
alert('changed');
});
} else {
f.change(function() {
alert('changed!');
});
}
});
似乎工作。
答案 2 :(得分:0)
这是Oppdal解决方案文件部分的一个稍微简洁的实现:
f.bind(($j.browser.msie && $j.browser.version < 9) ? 'propertychange' : 'change',
function(){
alert('changed!');
});
答案 3 :(得分:0)
在新的jQuery版本中已经改变了。我从1.4.4更新到1.6.2,没有解决方法,它工作正常。