在我的网络应用程序中,我有一个"导入用户"按钮。如果单击此按钮,将打开一个包含
的AJAX弹出窗口a)带有公司名称列表的下拉列表(此下拉列表具有ID CompanyID) b)一个名为fileUpload div的div,它最初是空的
当使用CompanyID菜单时,我希望它的行为如下:
a)如果CompanyID = 0,则禁用dropzone区域 b)如果CompanyID!= 0,则将companyID附加到formData
我遇到的问题是,如果有人选择CompanyID = 1,则会出现我的dropzone并附加数据。大!但是,如果他们然后选择另一家公司,那么它会尝试创建一个新的Dropzone并抱怨它已经附加了。
到目前为止有人更改CompanyID下拉选项时调用的代码如下:
function checkCompanySelected(CompanyID)
{
if (CompanyID==0)
{
// make sure dropzone div is disabled if it exists
}
else
{
var myDropzone = new Dropzone("#fileUploadDiv", { url: "importupload.asp"});
myDropzone.on("sending", function(file, xhr, formData) {
formData.append("CompanyID", CompanyID);
myDropzone.on("queuecomplete", function(file) { alert('All done'); closeImportUsersForm(); });
});
}
}
我真的一直在用一块砖墙敲打我的头 - 有很多关于将自动发现设置为假的东西,但到目前为止还没有运气。
答案 0 :(得分:0)
就像在StackOverflow上发布约30分钟后的情况一样,答案突然袭击了我。为了拯救其他任何人,这场战斗就是我的代码:
function checkCompanySelected(CompanyID)
{
document.getElementById('fileUploadDiv').innerHTML="";
if (CompanyID==0)
{
// make sure dropzone div is disabled if it exists
}
else
{
if (fileUploadDiv.dropzone)
{
fileUploadDiv.dropzone.destroy();
var myDropzone = new Dropzone("#fileUploadDiv", { url: "importupload.asp"});
}
else
{
var myDropzone = new Dropzone("#fileUploadDiv", { url: "importupload.asp"});
}
myDropzone.on("sending", function(file, xhr, formData) {
formData.append("CompanyID", CompanyID);
myDropzone.on("queuecomplete", function(file) { alert('All done'); closeImportUsersForm(); });
});
}
}
在查看错误处理之后我的突破来了,如果已经附加了dropzone并且我意识到确定你是否有dropzone的最简单的方法就是说......
if (fileUploadDiv.dropzone)
...将fileUploadDiv换成包含dropzone的div的名称。
重要提示 - 你不能只说fileUploadDiv.dropzone然后什么也不做,因为你会得到一条错误,说明它未定义。
myDropzone.on("sending", function(file, xhr, formData) {
这很奇怪,因为它一方面会出错,因为它已经附加了,但你也可能因为未定义而出错。
总而言之,我们有一种简单的方法来检测dropzone是否处于活动状态,然后我们可以销毁它并重新创建它。
autodiscover = false路线是一个红色的鲱鱼。