2011-04-14 8 views
166

가능한 중복 : jQuery를 - 파일이 파일 입력에 선택한 경우 감지


jQuery: get the file name selected from <input type=“file” />

내가 표준 파일 입력 상자도

<input type="file" name="imafile"> 

I에게 있습니다 페이지 아래쪽에 약간의 텍스트가 있습니다.

<span class="filename">Nothing selected</span> 

파일 입력 상자에서 선택한 파일의 이름으로 텍스트를 업데이트 할 수 있는지 궁금합니다.

건배,

+4

@jnpcl - 내가 해당 게시물은 무엇으로 같은 일을하고 있다고 생각하지 말아 난 want to do – BigJobbies

+0

''필드의'filename'을 출력합니다. 그건 ** 정확히 ** 당신이하고 싶은게 아닌가요? – drudge

+3

사용자가 파일을 선택할 때 * 이벤트가 발생하도록합니다. 이것은 파일이 선택되었음을 알게 된 후 이름을 얻는 것과 분명히 다릅니다. 이와 같이, 이것은 중복이 아닙니다. – MetalPhoenix

답변

254

당신은 입력의 onchange를 이벤트에 이벤트 핸들러를 첨부하고이 범위의 텍스트를 설정하는 함수를 호출해야 할 수 있어야합니다.

<script type="text/javascript"> 
    $(function() { 
    $("input:file").change(function(){ 
     var fileName = $(this).val(); 
     $(".filename").html(fileName); 
    }); 
    }); 
</script> 

당신은 당신이 DOM에서 다른 파일 입력 또는 스팬과 함께하지 우려 요소에 구체적으로 당신이 그에 따라 선택 할 수 있도록 입력 및 범위에 ID를 추가 할 수 있습니다.

+26

동일한 파일을 다시 선택하면'onchange'가 호출되지 않습니다. 이걸 어떻게 극복 할 수 있니?. – shashwat

+1

@shashwat 변경 사항 대신 live를 사용하면이 문제를 해결할 수 있습니다. 예 : $ ("input : file")에서 change 코드로 $ ("input : file")로 변경. live –

+7

@shashwat 입력의 click 이벤트에 바인딩하고 입력 값을 null로 설정합니다. –

11

변경 이벤트를 사용해 보시겠습니까? 테스트를 통해 값이 있는지 확인한 다음 코드를 계속 수행 할 수 있습니다. jQuery를이

.bind("change", function(){ ... }); 

또는 동등하다

.change(function(){ ... }); 

있습니다.

http://api.jquery.com/change/

는 고유 한 선택에 대한 ID로 이름 속성을 변경 한 다음 jQuery("#imafile") 또는 모든 파일 입력에 대한 일반적인 jQuery('input[type="file"]')

관련 문제