2013-09-27 10 views
6

私はこれらの入力タイプの多くを持っている:ファイル入力タイプの1つに値があるかどうかをチェックする方法は?

<input type="file" name="file_upload"> 

、送信ボタンをクリックしたときに、私は1つのこれらのフィールドが空でない場合はJS経由で確認したい(つまり、少なくとも1つのファイルがあるのですアップロードされました)。ここで

は動作しません私のコードです:

$('#upload-button').live('click', function() { 
    var has_selected_file = $('input[type=file]').val(); 

    if (has_selected_file) { 
    /* do something here */ 
    } 
    else { 
    alert("No file selected"); 
    } 
}); 

これは、常に何のファイル選択を警告していません。

答えて

7

使用.filter()は、値を入力要素をfindout、長さ

$('#upload-button').live('click', function() { 
    var has_selected_file = $('input[type=file]').filter(function(){ 
     return $.trim(this.value) != '' 
    }).length > 0 ; 

    if (has_selected_file) { 
     /* do something here */ 
    } 
}); 
+0

それが働いたおかげで、フィルタの使用と戻り部分があまりにも何であるかを説明する気? –

+0

@BelmarkCadayバグを修正するための更新をしました –

+1

'filter'は、オブジェクト/配列のすべてのメンバで指定された関数を実行するjsネイティブ関数です。ここでinput [file]タグのコレクションを繰り返し処理し、選択したファイルを持つすべての要素の配列を返します。この配列の長さがゼロでない場合、 'has_selected_file'はtrueです。したがって' do something' – jagzviruz

1

をチェックするためにあなただけ行うことができます:

var has_selected_file = $.trim($('input[type=file]').val()); 

if (has_selected_file != "") { 
    /* do something here */ 
} 
else { 
    alert("No file selected"); 
} 
関連する問題