0

私は最近、スタイリングを試みることにしましたinput type="file"。デザインはほぼ問題なく動作しますが、唯一の問題は、「ファイルが選択されていません」というテキストがfilename選択範囲に表示されることです。ファイルを選択してもテキストが表示されません。ヘルプと説明をいただければ幸いです。

次のコードがあります。HTML

<div class="fileuploader">
  <input type="text" class="filename" disabled="disabled" />
  <input type="button" name="file" class="filebutton" value="Browse" />
  <input type="file" name="avatar" />
</div>

そして次のCSS

    .fileuploader {
    position: relative;
    display: inline-block;
    overflow: hidden;
    cursor: default;
}

    .filename {
        float: left;
        display: inline-block;
        outline: 0 none;
        height: 30px;
        width: 302px;
        overflow: hidden;
        border: 1px solid #CCCCCC;
        color: #777;
        text-shadow: 1px 1px 0px #fff;
        border-radius: 5px 0px 0px 5px;
        box-shadow: 0px 0px 1px #fff inset;
        -moz-box-sizing: border-box;
        -webkit-box-sizing: border-box;
        box-sizing: border-box;
        padding: 6px 10px;
    }


    .filebutton {
        float: left;
        height: 30px;
        display: inline-block;
        outline: 0 none;
        cursor: pointer;
        border: 1px solid #CCCCCC;
        border-radius: 5px 5px 5px 5px;
        box-shadow: 0 0 1px #fff inset;
        color: #555555;
        margin-left: 3px;
        padding: 6px 12px;
        background: #DDDDDD;
        background:-moz-linear-gradient(top, #EEEEEE 0%, #DDDDDD 100%);
        background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #EEEEEE), color-stop(100%, #DDDDDD));filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#EEEEEE', endColorstr='#DDDDDD', GradientType=0);
    }

    .fileuploader input[type=file] {
        position: absolute;
        top: 0;
        right: 0;
        bottom: 0;
        border: 0;
        height: 30px;
        cursor: pointer;
        filter:alpha(opacity=0);
        -moz-opacity: 0;
        -khtml-opacity: 0;
        opacity: 0;
        margin: 0;
        padding: 0;
    }
4

1 に答える 1

2

ファイル名の選択に「ファイルが選択されていません」というテキストが表示されるようにします。ファイルを選択してもテキストが表示されません。

1 つの解決策は、ファイル入力によって JavaScript の「変更」イベントが発生するたびにファイル名を更新することです。これは、jQuery の $.change() 関数を使用して簡単に実現できます。

$(document).ready(function() {
    $('input[type="file"]').change(function() {
        var val = ($(this).val()) ? $(this).val() : "No file selected.";
        $('.filename').attr('placeholder', val);
    });
});

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

この機能を含む jsFiddle を作成しました: http://jsfiddle.net/cfY6m/1/

于 2013-07-04T00:16:39.127 に答える