如何创建一个带有函数的按钮,然后使用jQuery提交它?

时间:2009-12-21 15:02:56

标签: javascript jquery file-upload

我使用以下代码向页面添加按钮

$("#myDiv").html("<button id='fileUpload'>Upload</button>");

然后我在按钮上创建了一个Ajax Upload实例。

var button = $('#fileUpload'), interval;
new AjaxUpload(button, {
    action: '/upload.ashx',
    name: 'myfile',
    onSubmit: function(file, ext) {
        button.text('Uploading');
        this.disable();

        // Uploding -> Uploading. -> Uploading...
        interval = window.setInterval(function() {
            var text = button.text();
            if (text.length < 13) {
                button.text(text + '.');
            } else {
                button.text('Uploading');
            }
        }, 200);
    },
    onComplete: function(file, response) {
        button.text('Upload');
        window.clearInterval(interval);                
    }
});   

我想要做的是将按钮附加到页面,然后模拟自动点击它。我该怎么做呢?

更新

现在代码如下:

$("#myDiv").html("<button id='fileUpload'>Upload</button>");
var button = $('#fileUpload'), interval;
new AjaxUpload(button, {
    action: '/upload.ashx',
    name: 'myfile',
    onSubmit: function(file, ext) {
        button.text('Uploading');
        this.disable();

        // Uploding -> Uploading. -> Uploading...
        interval = window.setInterval(function() {
            var text = button.text();
            if (text.length < 13) {
                button.text(text + '.');
            } else {
                button.text('Uploading');
            }
        }, 200);
    },
    onComplete: function(file, response) {
        button.text('Upload');
        window.clearInterval(interval);                
    }
});
$('#fileUpload').click();

.click事件似乎没有触发。它在代码中达成但没有任何作用......

**更新**

$('#fileUpload').click();

需要

 $('input').click(); 

请检查接受的答案以了解原因。

5 个答案:

答案 0 :(得分:3)

  

我想要做的是追加按钮   到页面然后模拟点击它   自动。我该怎么办?   这样做?

简短的回答是你没有。

答案很长:

首先,您需要了解AJAX上传的工作原理。

  

插件会创建不可见的文件输入   你提供的按钮顶部,所以当   用户点击你的按钮正常   显示文件选择窗口。和   用户选择文件后插件   提交包含文件输入的表单   到iframe。所以这不是真正的ajax   上传,但带来相同的用户   经验。

这里有两件事:

  1. fileUpload不是实际的文件输入

  2. 通常,&lt; input type =“file”&gt;出于安全原因,无法在现代浏览器中以编程方式单击/设置元素。

答案 1 :(得分:2)

按钮上实际上没有click处理程序,因此没有任何反应。

答案 2 :(得分:1)

只需走

$('#fileUpload').click();

答案 3 :(得分:1)

您可以像这样调用按钮上的点击处理程序:

$('#fileUpload').click();

您已经处理过将其添加到页面中。

答案 4 :(得分:-1)

$('body').append('<a href="somepage.ashx" id="send">Go</a>').find('#send').click();