检查他们是否选择了文件?

时间:2010-11-13 16:31:40

标签: javascript jquery jquery-plugins uploadify javascript-framework

我正在使用jQuery插件,“uploadify”&我要做的是在上传开始后隐藏上传按钮,但是如果他们在选择文件之前点击它仍然会隐藏它。

这是我的提交功能:

$("#add_list").submit(function(){

    // Set new list id
    $("#filename").uploadifySettings('scriptData', { 'new_list_id': $('#new_list_id').val() });

    // Hide upload button
    $("#upload_button").hide();    

    // Trigger upload
    $("#filename").uploadifyUpload();

});

有没有办法可以获得文件名字段的值?我试过了..

$("#filename").val()

..但是没有用。即使选择文件也始终为空白。

3 个答案:

答案 0 :(得分:1)

好的.....所以我决定只使用'onSelect'事件更新隐藏的表单字段值;这样,当他们选择一个文件时,我可以将值更新为状态,他们选择了一个文件;然后在触发上传之前检查此值。如果上传存在问题或用户删除了文件,则只要触发'onCancel'事件,我就会将值更新为空白值。

以下是相关代码,如果它可以帮助其他人..

    'onComplete': function(event, ID, fileObj, response, data) {
        if (response != 'OK') {
            // Cancel upload
            $("#filename").uploadifyCancel(ID);               
            // Show upload button
            $("#upload_button").show();          
            // Output error message
            alert(response); 
        } else {
            // Submit secondary form on page
            document.finalize.submit();
        }
    },
    'onError': function(event,ID,fileObj,errorObj) {
        // Cancel upload
        $("#filename").uploadifyCancel(ID);
        // Format error msg
        var error_msg = errorObj.type + '. Error: '  + errorObj.info + '. File: ' + fileObj.name;
        alert(error_msg);
    },
    'onSelect': function(event,ID,fileObj) {
        // Update selected so we know they have selected a file
        $("#selected").val('yes');
    },
    'onCancel': function(event,ID,fileObj,data) {
        // Update selected so we know they have no file selected
        $("#selected").val('');
    }
});
$("#add_list").submit(function(){

    var selected = $("#selected").val();

    if (selected == 'yes') {

        // Set new list id
        $("#filename").uploadifySettings('scriptData', { 'new_list_id': $('#new_list_id').val() });

        // Hide upload button
        $("#upload_button").hide();    

        // Trigger upload
        $("#filename").uploadifyUpload();

    } else {

        alert('Please select a file to upload.');

    }

});    

答案 1 :(得分:0)

跟着这个。

function submitForm()
                        {
                            var html = document.getElementById('file_uploadQueue').innerHTML;
                            if(html.length > 0)
                                {
$('#file_upload').uploadifyUpload($('.uploadifyQueueItem').last().attr('id').replace('file_upload',''));
                            }
                            else
                            {
                            alert('choose file to upload');
// or you can submit the form. If uplodify is optional for u
                            }
                        }

答案 2 :(得分:0)

你也可以通过AJAX调用这个php函数来查看是否上传了任何内容。 (我在上传后将上传的文件移动到一组文件夹,所以这对我很有用;))

/*
     * returns the number of files in the tmp folder
     * @return number
    */
    public function countTmpFiles() 
    {

        $source = "path/to/your/foler"; //here are the uploaded files
        $files  = scandir( $source);
        $result = 0;
        foreach( $files as $file )
        {

            if ( in_array( $file, array( ".",".." ) ) ) 
            { 
                continue;
            }

            $result++;

        }
        return $result;
    }