2

私は次のHTMLを持っています:

<input id="upload1" type="file" /><br/>
<input id="upload2" type="file" /><br/>
<input id="upload3" type="file" /><br/>
<input id="upload4" type="file" /><br/>
<input id="upload5" type="file" /><br/>
<span id="label" style="color:red; display:none">
Wrong filetype!
</span>

そして、次の jQuery:

$('input:file').change(function(){
    var ext = $(this).val().split('.').pop().toLowerCase();
    $('#label').toggle(ext != 'pdf');
});

私がやりたいことは、#label5 つの要素すべてinput:fileが検証に合格した場合にのみトグルすることです (pdf 拡張子のみ)。またはファイルが選択されていません。

現時点では、.jpg最初に を選択すると が#label表示され、次に を選択する.pdfと が#label消えます。5 つの要素.jpgのうちの 1 つでまだ選択されているため、これは正しくありません。input:file

編集:ここでフィドル

4

3 に答える 3

2

これはどうですか?

$('input:file').change(function(){

    $('input:file').each(function(){
      var ext =   $(this).split('.').pop().toLowerCase();

        $('#label').toggle(ext != 'jpg');
    });
});​
于 2012-10-05T14:14:35.437 に答える
1

次のように変更する必要があります。

$('input:file').change(function(){
    var
        all_ok = true,
        inputs_set = $('input:file');

    for (var e in inputs_set) {
        if (e.val().split('.').pop().toLowerCase() != 'pdf') {
            all_ok = false;
        }
    }

    $('#label').toggle(!all_ok);
});
于 2012-10-05T14:14:29.960 に答える
0

両方の答えを組み合わせてそれを行うことができました:-

$('input:file').change(function() {  
    var allok = true;
    $('input:file').each(function() {
        if ($(this).val() !== "" &&
            $(this).val().split('.').pop().toLowerCase() != 'pdf') {
                allok = false;
        }
    });
    $('#label').toggle(!allok);
});
于 2012-10-08T09:57:46.590 に答える