【问题标题】:Problem Using a Hidden Input value as a parameter in a Javascript Document Ready function在 Javascript Document Ready 函数中使用隐藏输入值作为参数的问题
【发布时间】:2011-01-19 15:08:48
【问题描述】:

我正在将 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。在上传者变量之外,这两个值是正确的。

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

我猜这里的问题可能只是上传者可能在创建(空白)值之前设法获取它们?还是这与上传有关?或者我的文件准备好了有什么问题?请我真的需要帮助 - 我整天都在努力解决这个问题。提前致谢!

【问题讨论】:

    标签: javascript jquery ajax upload document-ready


    【解决方案1】:

    您为 document.getElementByID('fileyear').value 等获取的值将是 DOM 加载后立即的值,而不是您随后通过输入表单将其更改为的值。

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

    【讨论】:

    • 你是最棒的! :D 我刚刚创建了两个函数:一个用于年份,一个用于月份。它像魔术一样工作!再次感谢尼尔 :)
    【解决方案2】:
    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'
        }       
    }); 
    

    【讨论】:

    • 这是个好主意,丹尼尔。我实际上在文档中看到了 setParams。但是看到没有按钮或链接,点击事件是否适用于该插件强制使用的DIV?同时,尼尔上面的回答已经帮助了我。也谢谢!
    猜你喜欢
    • 1970-01-01
    • 2014-01-13
    • 2013-07-23
    • 1970-01-01
    • 1970-01-01
    • 2020-04-03
    • 2016-08-12
    • 1970-01-01
    相关资源
    最近更新 更多