2011-04-28 6 views
0

양식 유형 = "파일"업로드에 대한 완전한 UI 스타일을 갖기 위해 의사 양식 필드 (#fileName), 찾아보기, 업로드 버튼이 있습니다. 아래에 실제 양식 필드 (#fileAttach), 찾아보기 및 업로드 버튼이있는 숨겨진 양식이 있습니다. 사용자가 찾아보기를 클릭하면 실제 찾아보기 단추를 트리거 한 다음 실제 입력 필드의 파일 경로 값을 가져 와서 의사 입력 필드에 파일을 채우도록 트리거하려고합니다.Chrome 및 Firefox 파일 업로드 탐색 버그

browse = function() { 
     $("#fileAttach").click(); 
     var file = $("#fileAttach").val(); 
     $("#fileName").val(file); 
     } 

Safari 및 IE에서 작동합니다. 그러나 크롬과 파이어 폭스에서는 사용자가 파일을 선택한 후에 실행이 중지 된 것으로 보입니다. 파일 이름은 의사 양식 필드로 전달되지 않습니다. 그러나 두 번째로 browse()를 실행하면 첫 번째 파일 경로가 의사 양식 필드에 즉시 채워지고 새 파일 찾아보기 창이 생성됩니다. Chrome/FF는 함수의 첫 번째 행 만 실행하고 일시 중지하는 것으로 보입니다. 함수가 다시 호출되면 두 번째 줄과 세 번째 줄이 실행됩니다.

어떻게 될까요? 어떻게 해결할 수 있습니까? 미리 감사드립니다.

답변

1

브라우저는 코드를 통해 업로드 대화 상자를 실행하는 것을 정말로 좋아하지 않습니다.

나는 항상 내 자신의 찾아 버튼을 표시 절대적으로 opacity: 0와 맨 위에 input[type=file]을 배치했습니다. 모든 브라우저에서 작동합니다.

+0

감사합니다. 그러나 불행히도, 나는 그 옵션을 사용할 수 없다. 중간에 파일 업로드를 포함해야하는 거대한 입력 양식이 있습니다. 따라서 아약스를 에뮬레이션하기 위해 두 번째 숨겨진 양식을 첫 번째 아래에 배치합니다. 어떤 아이디어를 어떻게 사용자가 파일을 선택하면 의사 양식 필드에 경로 이름을 복사 할 수 있습니까? – user728302

+0

@user 사용자의 컴퓨터 (또는 적어도 실제 컴퓨터)에서 경로를 추출하는 방법이있을 것 같지 않습니다. – alex

+0

@alex _ "사용자 컴퓨터 (또는 적어도 실제 파일)에서 경로를 추출하는 방법은 없습니다."_ [HTML5 File API의 FileReader.readAsText가 작동하는 방법] (http : // stackoverflow. co.kr/questions/40146768/how-filereader-readastext-in-html5-file-api-works) – guest271314

관련 문제