2

我在发送图像时遇到问题 有一个文本区域字段供客户发送照片的描述,当他发送到数据库时,发送的图像好像所有图像都有相同的描述,只插入一个描述,

我正在使用库 DROPZONE.JS http://dropzonejs.com/

按照我的代码..请帮助我。

Dropzone.options.upload = {
    thumbnailWidth: 246,
    thumbnailHeight: 173,
    enqueueForUpload:false,
    paramName: "userfile",
    sending: function(file, xhr, formData) {    
        formData.append("titulo", $("#titulo").val());
        formData.append("evento", <?php echo $this->uri->segment(4); ?>);
        formData.append("capa", $("#cap").val());
    }
};

function upload() {
    var dz = Dropzone.forElement("#upload");
    for (var i = 0; i < dz.files.length; i++) {
        dz.filesQueue.push(dz.files[i]);
    }
    dz.processQueue(); 
}
4

2 回答 2

2

如前所述,整个文档中只能有一个具有 id 的 DOM 元素,否则您将遇到问题。这可以通过将文件名添加到文本框字段的 id 来即时解决。

在 previewTemplate 中为您的文本框添加代码

previewTemplate: "<div class=\"dz-preview dz-file-preview\"> ...
<input type=\"text\" class=\"titulo\" data-dz-titulo >
...
data-dz-errormessage></span></div>\n</div>"

当 previewTemplate 由 addedfile 函数呈现时,创建一个名为 titulo + file.name 的 id 为您的元素提供唯一的 id。这可以通过在 addedfile 函数中添加一行代码来完成。

addedfile: function(file) {
    file.previewElement = Dropzone.createElement(this.options.previewTemplate);
    ...
    file.previewElement.querySelector("[data-dz-titulo]").id = "titulo" + file.name;
    ...
    file.previewElement.querySelector("[data-dz-size]").innerHTML = this.filesize(file.size);
},

现在您还必须使用文件名在发送函数中获取匹配的标题。

sending: function(file, xhr, formData) {
    var filetitulo = document.getElementById('titulo' +file.name).value;
    formData.append("titulo", filetitulo);
    });
于 2015-07-02T01:42:08.990 回答
1

当您使用时,$("#titulo")您指的是具有titulo id 的输入/文本区域。

例如<input type="text" id="titulo">.

整个文档中只能有一个具有 id 的 DOM 元素。

将您的元素更改为<input type="text" class="titulo">然后您使用类似$(".titulo")[0],$(".titulo")[1]来选择字段。

于 2013-06-07T07:52:26.990 回答