使用jQuery预防和提交表单

时间:2013-04-17 06:36:49

标签: jquery forms submit uploadify preventdefault

我在jQuery中提交fire有问题:

$(document).ready(function() {
                    $('#zestaw-edytuj-form').submit(function(e) {
                        e.preventDefault();
                        $('#ip_dilmarbundle_zestawytype_path').uploadify('upload');
                    });

                    $('#ip_dilmarbundle_zestawytype_path').uploadify({
                        'swf'      : '{{ asset("js/uploadify/uploadify.swf") }}',
                        'uploader' : '{{ path('upload-image') }}',
                        'folder'   : '{{ asset("images") }}',
                        'auto'     : false,
                        'onUploadSuccess' : function(file,data,response) {
                            $('#ip_dilmarbundle_zestawytype_zdjecie').attr('value',file.name);

                        },
                        'onUploadComplete' : function(file) {
                            $('#zestaw-edytuj-form').submit();
                        },
                        'onUploadError' : function(file, errorCode, errorMsg, errorString) {

                        },
                    });
                });

首先,在提交按钮后单击我需要防止默认并上传图像。上传完成后(onUploadComplete)我需要正常提交表单。但是当图片上传时,提交不会触发。我该怎么办?

2 个答案:

答案 0 :(得分:0)

试试这个:

已编辑:修复此问题:尾随,此处位于'onUploadError:func(){},'

的末尾
$(document).ready(function() {
    var ready = false;

$('#zestaw-edytuj-form').submit(function(e) {
    if(!ready){
        e.preventDefault();
        $('#ip_dilmarbundle_zestawytype_path').uploadify('upload');
    }
});

$('#ip_dilmarbundle_zestawytype_path').uploadify({
    'swf'      : '{{ asset("js/uploadify/uploadify.swf") }}',
    'uploader' : '{{ path('upload-image') }}',
    'folder'   : '{{ asset("images") }}',
    'auto'     : false,
    'onUploadSuccess' : function(file,data,response) {
        $('#ip_dilmarbundle_zestawytype_zdjecie').attr('value',file.name);

    },
    'onUploadComplete' : function(file) {
        ready = true;
        $('#zestaw-edytuj-form').submit();
    },
    'onUploadError' : function(file, errorCode, errorMsg, errorString) {

    }
});
});

答案 1 :(得分:0)

我相信你有一个提交循环的公式,如果它可以工作。一些建议。您可以将表单分成两种形式(单独的表单标记),一种用于文件上载,另一种用于输入数据。文件上传完成后,提交数据表单。然而,最好的方法是使用uploadify,您可以将其他附加数据作为参数发送,这样处理文件上载的相同脚本也可以处理传入的数据。您可以获取var myform = $(this).serializeArray()这样的格式参数,我相信参数为formData,因此您可以在uploadify()配置参数中设置'formData':myform。 (参考:The Uploadify网站现在正在http://www.uploadify.com/documentation/uploadify/formdata/