问题使用隐藏输入值作为Javascript文档就绪功能中的参数

时间:2011-01-19 15:08:48

标签: javascript jquery ajax upload document-ready

我正在将AJAX上传器http://valums.com/ajax-upload/集成到我的应用程序中。默认情况下,脚本会将上载的文件转储到一个指定的目录中。我修改它以便它接收参数:两个文件夹的名称 - 年和月,所以它可以是例如uploads / 2010 / May /而不是uploads /但它仍然会将文件转储到uploads文件夹中,除非我明确地将这两个文件夹名称声明为字符串。

以下代码位于我的$(document).ready函数内。

var uploader = new qq.FileUploader({
    element: document.getElementById('uploadfile'),
    action: 'ajax/uploader.php',
    allowedExtensions: ["xls"],
    params: {
        f: '2010',//document.getElementById('fileyear').value,
        g: 'May'//document.getElementById('filemonth').value
    }       
});

如上所示,我评论了实际的行,而是使用虚拟值来检查[并且它以这种方式工作正常]。

我尝试过使用f:$(#fileyear).val(),g:$(#filemonth).val()并且它不起作用所以我必须默认使用document.getElementById,如上所述。在上传器变量外,这两个值是正确的。

另一个函数将日期存储到这些隐藏的输入中,我将它们更改为普通的文本输入,以确保它正确存储它们。

我猜这里的问题可能只是上传者可能在创建之前设法获取(空白)值?或者这与上传有关吗?或者我的文件准备好了吗?拜托,我真的需要帮助 - 整天都在喋喋不休。提前谢谢!

2 个答案:

答案 0 :(得分:2)

您为document.getElementByID('fileyear').value等获取的值将是加载DOM后立即显示的值,而不是您随后通过在表单中​​键入来更改它的值。

我会将“f”和“g”选项放入上传者调用的函数中以获取这些值。通过这种方式,您将获得调用时的值,而不是它们的初始值(空?)。

答案 1 :(得分:0)

var uploader = new qq.FileUploader({
    element: document.getElementById('uploadfile'),
    action: 'ajax/uploader.php',
    allowedExtensions: ["xls"] 
});

$('your_button_id').click(function(){
    uploader.setParams({
        f: document.getElementById('fileyear').value,
        g: document.getElementById('filemonth').value
    });
});  

var uploader = new qq.FileUploader({
    element: document.getElementById('uploadfile'),
    action: 'ajax/uploader.php',
    allowedExtensions: ["xls"],
    params: {
        f: (document.getElementById('fileyear')) ? document.getElementById('fileyear').value : 2010,
        g: (document.getElementById('filemonth')) ? document.getElementById('filemonth').value : 'May'
    }       
});