0

私はこのようなものを使用していますが、うまくいきません。

$(document).ready(function () {
    var content = $("#file_field").val();
    $("input.browser_hidden").val( content );
});

助言がありますか?2 番目のフィールドに値をハードコーディングしても表示されません。

私が使用しているhtmlは次のとおりです。

    <div class="file_wrapper"> 
       <input type="file" name="file_field" id="file_field">
       <div class="file_wrapper_inner"> 
          <input class="browser_hidden" value="something in here" type="text" />
          <a class="button_browse" href="#">Browse</a>
       </div> 
    </div>

基本的に私がやろうとしているのは、ファイル入力を非表示 (100% 透過) にすることです。入力をクリックすると、ファイル パスが .browser_hidden 入力フィールドにミラーリングされます。

4

2 に答える 2

3

<input type="file" />with javascriptに値を設定することはできません。セキュリティ上の理由から。

2番目のフィールドがファイル入力ではない場合、上記のコードは1つの理由でまだ機能しません-ドキュメントがロードされたときに1回だけ実行しています。その時点で、ファイル入力には値がありません。onchangeリスナーをファイル入力にアタッチしてから、値を転送する必要があります。

しかし、そうするのが良い考えかどうかはわかりません。ファイル入力の値は、ブラウザー間で一貫していない可能性があります。たとえば、Firefox ではフル パスが含まれていますが、Chrome ではファイル名のみが含まれているように見えます (js アクセスの場合であるかどうかは確認していません)。とにかく、ファイル名はフォームを送信するときにサーバー側で利用できます。

于 2012-04-23T21:33:15.363 に答える
1

入力ファイルで change を使用すると、うまくいきます (ドキュメントの準備ができたときに一度だけ呼び出すのではなく)。

$(function(){
    $('#file_field').change(function(){
        var elem = $(this);
        $('.browser_hidden').val('Selected: ' + elem.val() );
    }); 
});​

これが実際のサンプルです。

于 2012-04-23T21:45:01.857 に答える