2011-05-24 120 views
0

我的问题很简单:jQuery和输入[类型=“文件”]问题

我想保存我选择使用文件输入,并使用jQuery我希望把他们的名字别的地方瞬间的文件名没有刷新页面。

也许我会用文件名替换一个简单的文本。我会怎么做?

例子:

在开始正文: 的Hello World

选择文件后,这个 “Hello World” 将与 “my_filename.gif” 所取代。

想法?

回答

0

这里有一个潜在的解决方案:

<input type="file" onchange="$('#helloWorld').val($(this).val());"/> 
<input id="helloWorld" value="Hello World"/> 

你可以检查出来here

编辑:

修改它,以便将该值设置为 “Hello World” 开始,而不是innerHTML之中。

+0

'' ...? – davin 2011-05-24 21:47:38

+0

在标记中混合javascript逻辑是不好的做法,应该避免 – XGreen 2011-05-24 21:53:59

+0

@XGreen一般来说,我同意你的看法。不过,我坚信,将JavaScript事件添加到标记中的元素是可以的。这使得事件处理程序在查看HTML时很清晰,并且如果它们被正确命名,也可以在JavaScript文件中进行命名。如果我正在做更复杂的事情,我会在JavaScript文件中创建一个onchange函数并引用它。但是,我认为在这种情况下增加了不必要的复杂性,并使输入之间的联系更加模糊。 – Briguy37 2011-05-25 13:31:17

1

可以在数据功能保存对元素:

function getFileNameFromPath(path) { 
     var ary = path.split("\\"); 
     return ary[ary.length - 1]; 
    } 

    $(function() { 

     $('input[type=file]').change(function() { 
      $(this).data(
       'fileName', 
       getFileNameFromPath($(this).val()) 
       ); 

      alert($(this).data('fileName')); 
     }); 

    });