입력 유형 = 파일 만 표시 버튼 필드가없는 “찾아보기”버튼 만 보이도록 요소 를 스타일

<input type=file />텍스트 필드가없는 “찾아보기”버튼 만 보이도록 요소 를 스타일 지정 (또는 스크립트)하는 방법이 있습니까?

감사

편집 : 왜 이것이 필요한지 명확히하기 위해. http://www.morningz.com/?p=5의 다중 파일 업로드 코드를 사용 하고 있으며 값이 없으므로 입력 텍스트 필드가 필요하지 않습니다. 스크립트는 새로 선택된 파일을 페이지의 컬렉션에 추가합니다. 가능하다면 텍스트 필드가 없으면 훨씬 나아 보일 것입니다.



답변

<input type="file" id="selectedFile" style="display: none;" />
<input type="button" value="Browse..." onclick="document.getElementById('selectedFile').click();" />

이것은 분명히 내 프로젝트에서 사용했을 것입니다.


답변

나는 이것을 달성하려고 많은 시간을 보내고 있었다. 플래시 솔루션을 사용하고 싶지 않았으며 내가 본 jQuery 라이브러리는 모든 브라우저에서 신뢰할 수 없었습니다.

CSS로 완전히 구현 된 자체 솔루션을 찾았습니다 (버튼 클릭이 ‘클릭’되도록 보이기 위해 onclick 스타일 변경 제외).

http://jsfiddle.net/VQJ9V/307/ (FF 7, IE 9, Safari 5, Opera 11 및 Chrome 14에서 테스트 됨)에서 실제 예제를 사용해 볼 수 있습니다.

큰 파일 입력 (font-size : 50px)을 만든 다음 고정 크기와 overflow : hidden을 가진 div에 래핑하여 작동합니다. 입력은이 “창”div를 통해서만 볼 수 있습니다. div에 배경 이미지 또는 색상을 부여하고 텍스트를 추가 할 수 있으며 div 배경을 표시하기 위해 입력을 투명하게 만들 수 있습니다.

HTML :

<div class="inputWrapper">
    <input class="fileInput" type="file" name="file1"/>
</div>

CSS :

.inputWrapper {
    height: 32px;
    width: 64px;
    overflow: hidden;
    position: relative;
    cursor: pointer;
    /*Using a background color, but you can use a background image to represent a button*/
    background-color: #DDF;
}
.fileInput {
    cursor: pointer;
    height: 100%;
    position:absolute;
    top: 0;
    right: 0;
    z-index: 99;
    /*This makes the button huge. If you want a bigger button, increase the font size*/
    font-size:50px;
    /*Opacity settings for all browsers*/
    opacity: 0;
    -moz-opacity: 0;
    filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0)
}

문제가 있으면 알려 주시면 해결하겠습니다.


답변

나는 오늘이 일을하는 데 하루를 낭비했다. 각 시나리오에서 작동하는 솔루션을 찾지 못했습니다.

그런 다음 텍스트 상자가없는 JQuery 파일 업로드예를 보았습니다 . 그래서 제가 한 것은 그들의 예를 들어서 관련 부분으로 줄였습니다.

이 솔루션은 적어도 IE 및 FF에서 작동하며 완전히 스타일을 지정할 수 있습니다. 아래 예제에서 파일 입력은 멋진 “파일 추가”버튼 아래에 숨겨져 있습니다.

<html>

<head>
    <title>jQuery File Upload Example</title>
    <style type="text/css">
        .myfileupload-buttonbar input
        {
            position: absolute;
            top: 0;
            right: 0;
            margin: 0;
            border: solid transparent;
            border-width: 0 0 100px 200px;
            opacity: 0.0;
            filter: alpha(opacity=0);
            -o-transform: translate(250px, -50px) scale(1);
            -moz-transform: translate(-300px, 0) scale(4);
            direction: ltr;
            cursor: pointer;
        }
        .myui-button
        {
            position: relative;
            cursor: pointer;
            text-align: center;
            overflow: visible;
            background-color: red;
            overflow: hidden;
        }
    </style>
</head>
<body>
    <div id="fileupload" >
        <div class="myfileupload-buttonbar ">
            <label class="myui-button">
                <span >Add Files</span>
                <input id="file" type="file" name="files[]" />
            </label>
        </div>
    </div>
</body>
</html>

답변

입력 파일 요소를 숨기고 해당 입력 파일의 클릭 이벤트를 트리거하는 표시 단추를 작성하십시오.

이 시도:

CSS

#file { width:0; height:0; } 

HTML :

<input type='file' id='file' name='file' />
<button id='btn-upload'>Upload</button>

자바 스크립트 (jQuery) :

$(function(){
    $('#btn-upload').click(function(e){
        e.preventDefault();
        $('#file').click();}
    );
});

답변

CSS로 입력 파일 태그를 숨기고 레이블을 추가 한 후 입력 버튼에 지정하십시오. 레이블을 클릭 할 수 있으며 클릭하면 파일 대화 상자가 나타납니다.

<input type="file" name="imageUpload" id="imageUpload" class="hide"/>
<label for="imageUpload" class="button-style">Select file</label>

레이블에 스타일을 버튼으로 추가하십시오.
라이브 데모


답변

그것은 매우 어려울 것입니다. 파일 입력 유형의 문제점은 일반적으로 단일 DOM 요소로 취급되는 동안 두 개의 시각적 요소로 구성된다는 것입니다. 또한 일부 브라우저는 파일 입력에 대한 고유 한 모양과 느낌을 가지고 있으며 악몽으로 설정되어 있습니다. 파일 입력의 단점 에 대해서는 quirksmode.org 에서이 기사를 참조하십시오 . 나는 그것이 당신을 행복하게하지 않을 것이라고 보장합니다 (나는 경험에서 말합니다).

[편집하다]

실제로, 입력을 컨테이너 요소 (예 : div)에 넣고 요소에 음의 여백을 추가하면 벗어날 수 있다고 생각합니다. 텍스트 상자 부분을 화면에서 효과적으로 숨 깁니다. 다른 옵션은 링크 된 기사의 기술을 사용하여 버튼처럼 스타일을 지정하는 것입니다.


답변

모든 브라우저에서 작동하도록 수정되었습니다.

      <input type = "button" value = "Choose image"
       onclick ="javascript:document.getElementById('imagefile').click();">
      <input id = "imagefile" type="file" style='visibility: hidden;' name="img"/>

나는 FF, Chrome & IE에서 테스트를 거쳤습니다.