如果文件输入为空,如何不显示警报?

时间:2012-02-07 01:08:00

标签: jquery

var $imagefile = $('<input />')
    .attr({
        type: 'file',
        name: 'imageFile',
        id: 'imageFile'
    });

以上是我创建文件输入的代码。

下面是检查表格行中文件格式是否正确的代码:

function validation() {

    var marks = parseInt($("#total-weight").text());    
    var _qid = "";
    var _msg = "";


    var allowedTypes = ["jpg", "jpeg", "gif", "png"];

    var path = $("#imageFile").val();
    var ext = path.substring(path.lastIndexOf('.') + 1).toLowerCase();

    var alertValidation = "";
    // Note, this is just so it's declared...
    $("tr.optionAndAnswer").each(function() {


        _qid = $("td.qid",this).text();
        _msg = "You have errors on Question Number: " + _qid + "\n";


        $("#imageFile",this).each(function() {

            if ($.inArray(ext, allowedTypes) < 0) {
                alertValidation += '\n\u2022 Unsupported file type';
            }

            if (alertValidation != "") {
                return false; //Stop the each loop 
            }
        });

        if(alertValidation != ""){
            return false;
        }
    });


    if (alertValidation != "") {
        alert(_msg + alertValidation);
        return false;
    }

    return true;
}

现在,通过识别哪个文件类型正确且不正确,这可以正常工作。问题是,如果在所有表行中用户没有选择文件,那么它会提供不正确的警报。

如何获取它以便在用户不选择文件时允许输入空白文件?

1 个答案:

答案 0 :(得分:1)

在这个例行程序中

$("#imageFile",this).each(function() {

        if ($.inArray(ext, allowedTypes) < 0) {
            alertValidation += '\n\u2022 Unsupported file type';
        }

        if (alertValidation != "") {
            return false; //Stop the each loop 
        }
    });

您应该检查它是否有值,如果有,请继续处理。像这样:

$("#imageFile",this).each(function() {
    if($(this).val().length) {
        // continue on
    }
});

在我们的评论之后,你应该使用类选择器而不是id选择器。所以你的创建代码可能应该是这样的:

var $imagefile = $('<input />')
.attr({
    type: 'file',
    name: 'imageFile',
    class: 'imageFile'
});

你的日常工作应该是:

$(".imageFile",this).each(...

这样你可以迭代一个集合。