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

问题描述:

我正在将AJAX上传器http://valums.com/ajax-upload/集成到我的应用程序中。默认情况下,脚本将上传的文件转储到一个指定的目录中。我对它进行了修改,以便它接收参数:两个文件夹的名称 - 年和月,因此它可以是例如上传/ 2010/May /而不是上传/但它仍然会转储上传文件夹中的文件,除非我明确声明两个文件夹名称为字符串。问题在Javascript文档就绪功能中使用隐藏输入值作为参数

下面的代码在我的$(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。在上传器变量之外,这两个值是正确的。

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

我猜这里的问题可能只是上传者可能会设法在创建之前获取(空白)值?或者这是否与上传有关?或者我的文档有问题吗?请我真的需要帮助 - 整天都在我的脑海里喋喋不休。提前致谢!

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

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

+0

你是最好的! :D我刚刚创建了两个函数:一个用于一年,一个用于一个月。它像魔术一样工作!再次感谢尼尔:) – Cogicero 2011-01-19 16:03:27

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' 
    }  
}); 
+0

这将是一个好主意,丹尼尔。我实际上在文档中看到了setParams。但是看到没有按钮或链接,点击事件是否会对插件强制使用的DIV起作用?同时,尼尔的回答已经帮助了我。也谢谢你! – Cogicero 2011-01-19 16:10:01