2012-12-17 3 views
0

사용자로부터 파일을 가져오고 파일 이름을 지정할 수있는 HTML 양식을 만들었습니다. 또한 업로드 스트림에서 파일의 이름을 얻을 수있는 javascript 함수를 만들고 경로와 확장명이없는 이름 만 만들었습니다. 문제는 내가 원하는대로 업로드 이름을 바꾸기 위해 입력을 변경하지 못합니다. 여기에 두 개의 실증 경고와 함께 작업 기능입니다 :JS : 파일 입력 파일에서 입력 텍스트 (값) 변경

<script type="text/javascript"> 
function updateInput(val) { 
    som = val.split('\\')[val.split('\\').length - 1]; 
    som = som.split('.')[0]; 
    alert('Hey 1'); 
    fileName.value = som; 
    alert('Hey 2'); 
}; </script> 

"야 1"경고가 표시됩니다 그것은 괜찮아. "Hey 2"는 실제로 이 아니며이 표시됩니다! filename은 이름파일의 이름에 대한 입력의 ID 모두, 내가 DID document.getElementById를 ('파일 이름'). 사용 시도 값 = ...하지만 운. 파일명

선언 :

<input type="text" runat="server" id="fileName" name="fileName" /> 

자바 스크립트이 입력중인 코드에 위치한다. uploadImage 입력 (파일 유형 임)은이 입력 위에 있습니다. (예, 이벤트가 호출되고 som은 내가 갖고 싶은 값을 얻습니다.)

* input : text 요소의 값을 변경하려고합니다. 나는 var 것을 시도 할 것이다.

도움을 주시면 감사합니다.

+1

입력 필드가 선언 된 html 부분을 볼 수 있습니까? –

+0

'input : file' 요소의'value'를 설정하려고합니까? 아니면 내가 잘못 읽었습니까? 어쨌든, 왜'fileName.value = som;'이 작동 할 것으로 기대합니까? – Ian

+0

아마'som' 앞에'var'을 두어 로컬 변수로 선언하고 싶을 것입니다. 또한,'fileName' 변수는 무엇입니까? 여기에 선언되지 않았으므로 우리는 그것이 무엇인지 알지 못합니다. – jfriend00

답변

2

는 지금까지 내가 문제를 이해, 아래의 코드는 잘 작동합니다 :

<script type="text/javascript"> 
function updateInput(val) { 
    var som = val.split('\\')[val.split('\\').length - 1]; 
    som = som.split('.')[0]; 
    alert('Hey 1'); 
    document.getElementById('<%=fileName.ClientID %>').value = som; 
    alert('Hey 2'); 
}; </script> 

때문에 runat="server"의 브라우저에서 요소의 ID는 당신이 당신의 .aspx 파일 참조 하나 다를 수 있습니다. HTML 요소의 ID는 CotentPlaceholder1_fileName과 같으므로 document.getElementById('fileName')은 찾을 수 없으며 document.getElementById('fileName').value = son;은 오류를 발생시킵니다.

fileName.value = som;과 동일한 문제 - 내가 이해하는 한, IE의 기능을 사용하려고합니다 (IE 전용 기능인 경우 확실하지 않지만 사용하지는 않지만 그와 같은 것이 있음을 기억하십시오) 요소의 ID를 사용하여 전역 이름 공간의 변수. ID는 fileName과 다르므로 변수 이름도 다릅니다.

브라우저에서와 같이 runat="server" 요소의 ID를 가져 오는 중에는 .ClientID 속성을 사용할 수 있습니다. 또한 var을 사용하여 함수 범위 내에서 변수를 정의해야합니다. var som = val.split('\\')[val.split('\\').length - 1];처럼. 이렇게하면 전역 범위 (updateInput 함수 외부)에 표시되지 않습니다. 그렇지 않으면 미래에 잠재적으로 문제가 발생할 수 있습니다.

+0

고마워요! 그것은 효과가 :) 만약 내가 같은 문제가 누군가를 볼 수 있기를 바랍니다. – Kfirprods