Jquery表单上传插件:如何将其减少到一次点击?

时间:2011-08-20 12:33:03

标签: jquery jquery-plugins file-upload jquery-forms-plugin

我正在使用jquery form plugin来处理上传文件,

这是我的表格,

    <form action="upload.php" method="post" enctype="multipart/form-data" id="myForm">
  <input type="file" multiple="multiple" name="file[]" />
  <input type="submit" name="upload" value="Submit"/>
</form>
<div id="output"></div>    

jquery,

    $('#myForm').submit(function() {

        $(this).ajaxSubmit({
        target: '#output'
        });

        return false;

   });

这个想法的后退是你必须在上传文件之前点击两次 - 你必须点击浏览文件,然后点击提交按钮。

如何将其减少为一次点击?理想情况下,当您从桌面选择文件并在浏览窗口/弹出窗口中单击“确定”时,我希望它自动触发提交。

有可能吗?

另一个注意事项:为什么它不适用于Chrome,IE和Safari(它只适用于Firefox和Opera) - 表单将在这些浏览器上提交,但我已将submit()设置为{{ 1}}?

2 个答案:

答案 0 :(得分:0)

您需要在处理文件的输入上设置一个事件处理程序,并将其链接到“已更改”的事件处理程序。这样,当用户更改文件名时,您调用的函数可以查看文件是否存在,然后自动提交表单。

阻止发生默认事件的“Jquery方式”是event.preventDefault()。这可能等于return false但是在使用它时我从未遇到过问题。另一件事可能是你在那些阻止返回false的浏览器上遇到脚本错误。您可以通过将事件处理程序更改为以下内容来执行此操作

    function(event)  {
       event.preventDefault();
       // Do stuff here
    }

答案 1 :(得分:0)

$('input[type=file]').change(function() {
    var vals = $(this).val(),
        val = vals.length ? vals.split('\\').pop() : '';
    alert("value changed submit the form here");
    $('input[type=text]').val(val);
});

http://jsfiddle.net/CSvjw/82/