2011-08-13 52 views
1

我有我的工作是這樣工作的照片上傳表單:jQuery的形式提交事件

  1. 您單擊「上傳照片」按鈕。 jQuery檢測到點擊並觸發一個點擊事件到表單中隱藏的「文件」字段,這會彈出一個對話框來搜索你的文件。
  2. 當用戶選擇文件時,會在隱藏文件字段中檢測到更改事件並觸發表單提交。下面是代碼:

    // on photo upload button click: 
    $("input[name=PhotoUpload]").click(function() { 
        $("input[name=Photo]").click(); 
    }); 
    
    // on photo upload: 
    $("input[name=Photo]").change(function() { 
        $("form[name=MediaUpload]").submit(); 
    }); 
    

    和形式:

    <form name="MediaUpload" method="post" action="/postad/media.cfm" target="Media" enctype="multipart/form-data"> 
        <input type="button" name="PhotoUpload" value="Upload Photo"> 
        <input type="file" name="Photo" size="30" style="visibility:hidden;"> 
    </form> 
    

這個作品在Chrome和Firefox很棒,但我有在IE瀏覽器的任何版本沒有運氣。有什麼建議麼?

+0

我似乎記得IE不允許將focus()分配給一個隱藏的元素,這可能也會排除click()事件。 –

+0

IE中發生了什麼?任何錯誤?你看過控制檯嗎? –

+0

你在IE中看到文件對話框嗎? – ShankarSangoli

回答

1

我建議嘗試不同這一點:

// on photo upload button click: 
$("input[name=PhotoUpload]").click(function() { 
    $("#your_dialog").dialog("open"); 
}); 

//Remove the `.change` function. 
// add the form submit line below after the dialog code changes the `Photo` field 
$("form[name=MediaUpload]").submit(); 

很容易混淆IE的JavaScript。如果它碰到讓它消化不良的東西,它會停止處理js。

+0

謝謝!似乎在做伎倆:) – Josh