10

簡単な質問だと思いますが、経験豊富な方からのアドバイスが必要です。

次のような3つの入力タイプのファイルがあります。

<input type="file" name="1-files" />
<input type="file" name="2-files" />
<input type="file" name="3-files" />

名前が「-files」で終わるすべての入力(私のページには他の入力タイプのファイルもあります)を選択します(Google Chromeコンソールに書きました):

$("input[type='file'][name*='-files']").length

Ok。入力を使用してファイルを選択します1-files。その後、Google Chrome コンソールで次のコードを実行します。

$("input[type='file'][name*='-files']:empty").length

私はそうであると期待して2いますが、そう3です。

なぜか教えてくれますか ?

値が空の入力型ファイルのすべての要素を取得したい。セレクターを簡単に使用しました:emptyが、正しく機能していないようです。

もちろん、私は使用することができます

var empty_count = 0;
$.each($("input[type='file'][name*='-files']"), function(k, v){
  if($(this).val() === '')
     empty_count++;
});

しかし、私はこれなしでこれを行う最短の方法が欲しい$.each.

ありがとうございました

4

3 に答える 3

10

子孫のない要素に一致し、入力要素は定義により子孫を持つことができないため、3 つに:empty一致します (つまり、すべてが空であり、したがって:emptyセレクターに一致します)。

ファイルが選択されていない要素を見つけるには、次のことをお勧めします。

$("input[type='file'][name*='-files']").filter(function (){
    return !this.value
}).length;

参考文献:

于 2013-06-11T12:36:30.800 に答える
3

あなたは..filterの代わりに使うことができます$.each

$("input[type='file'][name*='-files']").filter(function(k){
  return $(this).val() === '';
}).length;
于 2013-06-11T12:39:52.333 に答える