2009-12-21 110 views
0

我用下面的代碼按鈕添加到頁面如何用函數創建一個按鈕,然後使用jQuery提交它?

$("#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(); 

的。點擊事件似乎並不火。它達到了代碼,但什麼都不做......

** **更新

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

需求是

$('input').click(); 

請檢查爲什麼公認的答案。只要

+0

你得到的錯誤是什麼?你是否在開始時觸發這段代碼? 如果記得在dom被加載時等待,等等。 – 2009-12-21 16:00:17

回答

3

我想要做的就是按鈕 追加到頁面,然後點擊模擬它 自動。我會如何去做 這樣做?

簡短的回答是,你沒有。

長答案:

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

插件上 頂部您提供的按鈕創建看不見的文件輸入,所以當 用戶點擊您的按鈕顯示正常 文件選擇窗口。並且 用戶選擇文件後,插件 將包含文件輸入 的表單提交給iframe。所以它不是真正的ajax 上傳,但帶來相同的用戶 的經驗。

這裏有兩件事情:

  1. 的FileUpload不是實際的文件輸入

  2. 一般來說,<輸入類型=「文件」 >元素不能點擊/現代瀏覽器編程設置出於安全原因。
+0

我需要觸發添加到頁面的輸入.click。 – Linda 2009-12-21 16:37:02

1

通過去

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

.click()不會觸發。代碼已達到,但沒有。我正在運行$('#fileUpload')。click();直接在window.clearInterval(interval)下面; } }); – Linda 2009-12-21 15:30:06

1

你可以調用這樣的按鈕單擊處理程序:

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

你已經處理它添加到頁面。

+0

.click()不會觸發。代碼已達到,但沒有。我正在運行$('#fileUpload')。click();直接在window.clearInterval(interval)下面; }}); – Linda 2009-12-21 15:36:54

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

這是錯誤的,它會模擬點擊身體 – Gausie 2009-12-21 15:09:32

2

您實際上沒有按鈕上的click處理程序,因此沒有任何反應。

相關問題