方法和原理就是:
- 你本身是无法阻止文件域的onchange事件多次 被 触发的, change(function(){....}); 方法会被多次执行的, 这个是无法改变的!
- 你可以做的是: 当每次 执行change()方法的是, 通过一个标志变量, 来判断change方法是否已经被执行, 当由 标志变量 探测到change方法 已经被执行过, 时就直接让 change方法退出
function upGo(){
$('#upload').click(); // 触发fie域点击事件动作
var changeExed = false; // 这个是标志变量, changeExed: change is executed?
$('#upload').change(function (ev){
if(!changeExed){
changeExed = true; // 执行一次后, changeExed就设置为true, 所以该代码段 只能执行一次, 后面如果发生的 change事件执行的代码 为空! 但是, 第二次及以后的change事件还是 发生 并 是执行了的!
var uf = ev.currentTarget.files[0];
var fname = uf.name;
.......
}; // change 方法结束
/// 要注意 在change方法中, 返回fale 并不能让change代码只执行一次, 只是: return false 阻止浏览器的默认行为 不能???