+ -
当前位置:首页 → 问答吧 → [新手求助]多文件上传,用jQuery写的JS,但是木有达到想要的效果..不知道怎么改了

[新手求助]多文件上传,用jQuery写的JS,但是木有达到想要的效果..不知道怎么改了

时间:2009-09-24

来源:互联网

新手求大侠指导~
多文件上传,用jQuery写的JS
想达到和论坛里差不多的效果

文件域选择文件以后 隐藏掉这个文件域 后面添加上值 和删除按钮
然后下面自动添加一个新的文件域

然而发现只有改变最初的文件域才有效果 后面生成的文件域完全木有效果...

删除按钮却删掉了最新添加进来的文件域 没有删掉该删的...囧

谁教教我要怎么改...

htmlcode
复制代码
  1. <div id="upfilebox">
  2.     <input id="att_0" name="infoimg[]" type="file" class="input" size="40">
  3. </div>  


jscode
复制代码
  1. var id=0;
  2. $(function(){
  3.     $('#att_' + id).change(function(){                                                                    
  4.             $('#att_' + id).hide();    
  5.             $('#upfilebox').append('<span id="attext_'+ id +'"><a href="#delAttach" onclick="delAttach(' + id + ')"> [删除] </a>' + $('#att_' + id).val() +'</span>');
  6.             $('#upfilebox').append('<br><br><input id="att_' + (id + 1) + '" name="infoimg[]" type="file" class="input" size="40">');
  7.             id++;            
  8.     });
  9. });        
  10. function delAttach(num){
  11.             $('#att_' + id).remove();
  12.             $('#attext' + id).remove();
  13. }


用firebug看代码 下面id是加上去的

没变化是因为 $('#att_' + id).change(function(){ 这里的 id 一直是 0 ?

哪位大侠教教我吧...  
[ 此帖被ql2005在2009-09-24 22:43重新编辑 ]

作者: ql2005   发布时间: 2009-09-24

你只是给id=att_0这个文件域绑定了change事件,并没有给新添加的绑定
var id = 0;
            $(function(){
                $('#att_' + id).change(function(){
                            add(id);
                        });
                function add(id){
                    $('#att_' + id).change(function(){
                        $('#att_' + id).hide();
                        $('#upfilebox').append('<span id="attext_' + id + '"><a href="#delAttach" onclick="delAttach(' + id + ')"> [删除] </a>' + $('#att_' + id).val() + '</span>');
                        $('#upfilebox').append('<br><br><input id="att_' + (id + 1) + '" name="infoimg[]" type="file" class="input" size="40">');
                           id++;
                        $('#att_' + id).change(function(){
                            add(id);
                        });
                    });
                }
            });
function delAttach(num){
                $('#att_' + num).remove();
                $('#attext_' + num).remove();
            }
[ 此帖被ziyou在2009-09-24 21:07重新编辑 ]

作者: ziyou   发布时间: 2009-09-24

唔..直接复制无效..
但是知道错在哪里了
我按一楼的思路改了下
终于搞定了
多谢1楼!!
复制代码
  1. var id = 0;
  2. $(function(){
  3. $('#att_' + id).change(function(){
  4.   addAttach(id);
  5. });
  6. });        
  7. function addAttach(num){
  8.             $('#att_' + id).hide();    
  9.             $('#upfilebox').append('<span id="attext_'+ id +'"><a href="#delAttach" onclick="delAttach(' + id + ')"> [删除] </a>' + $('#att_' + id).val() +'</span>');
  10.             $('#upfilebox').append('<br><br><input id="att_' + (id + 1) + '" name="infoimg[]" type="file" class="input" size="40">');
  11.             id++;
  12.             $('#att_' + id).change(function(){
  13.                   addAttach(id);
  14.             });
  15. }
  16. function delAttach(num){
  17.                 $('#att_' + num).remove();
  18.                 $('#attext_' + num).remove();
  19.             }

作者: ql2005   发布时间: 2009-09-24

学习!

作者: pandait   发布时间: 2009-09-24

相关阅读 更多