2011-08-13 28 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