2017-03-07 3 views
0

角度2を使用してキーボードアクセス可能なアップロードページを作成しようとしています。スペースバーと入力キーを使用して「アップロードするファイルを選択」を有効にできません。私はラベルをクリックしてファイルをアップロードすることができます。スペースバーでアップロードファイルのラベルにアクセスできるようにして入力してください

<label for="files" > Choose a file to upload </label> 
<input type="file" id="files" (click)="upload($event)"/> 

入力の表示がなく、私はラベルを使用してアップロードするファイルを選択できるようにしています。私はonkeypress、keyup、keydownを試しましたが、ラベルにキーボードでアクセスできるようにすることはできません。

+0

タブとスペースでhttps://plnkr.co/edit/UKuSKU5hg9bhakEHR32Y?p=previewで正常に動作するようです。 –

+0

いいえ。display:noneを使用してデフォルトの選択ファイルを隠しているためです。私はちょうどユーザーがラベルをアップロードするファイルを選択するを参照してください。 –

+0

質問の重要な部分を省略すると、どのように役に立つ答えが得られますか。問題を再現し、予想される動作を説明するコードを提供してください。 –

答えて

0

同じ問題がありました。スペースキーまたはEnterキーが押された場合、ラベルにクリック操作を追加するためのキー入力ハンドラを追加しました。

Here's a working Plunkr.

HTML(tabindex="0"を忘れないでください):

<label class="btn" for="files" tabindex="0" (keypress)="onUploadLabelClick($event)">Choose a file to upload</label> 
<input class="hiddenFileUpload" type="file" id="files" (click)="upload($event)"/> 

関連機能:

onUploadLabelClick(evt): void { 
    var keyCode = evt.which || evt.keyCode; 
    if (keyCode === 13 || keyCode === 32) { 
     $(evt.target).click(); 
     evt.preventDefault(); 
    } 
} 

私はここにjQueryのを使用しますが、それはと同じことを行うのに十分に簡単です純粋なJS明らかに。

関連する問題