Dropzone.js - 与普通形式合并 - 询问定位
Dropzone.js - Combine with normal form - ask about positioning
我正在使用 Dropzone 并尝试将其与普通形式结合使用,所以我阅读了本教程 https://github.com/enyo/dropzone/wiki/Combine-normal-form-with-Dropzone
是的,我可以成功地做到这一点。但是,我希望其他输入文本字段和提交按钮在表单标记之外(在 dropzone 之外)所以我使用 css position:absolute
文本输入在表单上方,提交按钮在表单下方
但我忘记了如果我 select 上传图片,表单 dropzone 的高度会扩展。所以它失败了。 (见截图)
<form id="my-awesome-dropzone" class="dropzone" style="position:relative">
<div class="dropzone-previews"></div>
Username : <input type="text" name="username" style="position:absolute; top:-50px; left:0px; /> <br/>
Email: <input type="text" name="email" style="position:absolute; top:-40px;left:0px; /> <br/>
<button type="submit" style="position:absolute;top:100px;left:0px;">Submit data and files!</button>
</form>
我什至将按钮移到窗体外部并使用 html5 属性 form="my-awesome-dropzone"
但它不起作用。我该怎么办?
我认为您的拖放区重叠提交按钮的问题是由于表单具有 style="position:relative"
和按钮具有 style="position:absolute;top:100px;left:0px;"
。将它们都删除。
你可以这样做,在表格底部填充 20px
,然后将 button
附加到 absolute, bottom: 0px
,它会在表格的末尾,即使如果有上传的图片。
$(function(){
Dropzone.autoDiscover = false;
var myDropzone = new Dropzone("#my-awesome-dropzone", { url: "/file/post"});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="http://www.dropzonejs.com/new-js/dropzone.js"></script>
<link href="http://www.dropzonejs.com/css/dropzone.css" rel="stylesheet"/>
<form id="my-awesome-dropzone" class="dropzone" style="position:relative; padding-bottom: 30px;">
<input type="email" name="username" /><br>
<input type="password" name="password" /><br>
<div class="dropzone-previews"></div>
<button type="submit" style="position: absolute; bottom: 0px;">Submit data and files!</button>
</form>
这似乎是一种实现您想要的目标的奇怪方式。我检查了文档,在“提示与技巧”部分 (https://docs.dropzone.dev/misc/tips) 中明确指出,您可以使用 class dz-message 将元素放入 dropzone 元素中,dropzone 不会创建消息为你。所以我建议你像我一样做,在你的提交按钮上方放置以下元素:
<div class="dz-message">
<div>Upload file here</div>
</div>
不利的一面是 dictDefaultMessage
没有兑现。
此外,如果 javascript 被禁用,那么 div 仍会显示,在这种情况下将其添加到您的 css:
<noscript>
<style>
.dz-message {display:none;}
</style>
</noscript>
我正在使用 Dropzone 并尝试将其与普通形式结合使用,所以我阅读了本教程 https://github.com/enyo/dropzone/wiki/Combine-normal-form-with-Dropzone
是的,我可以成功地做到这一点。但是,我希望其他输入文本字段和提交按钮在表单标记之外(在 dropzone 之外)所以我使用 css position:absolute
文本输入在表单上方,提交按钮在表单下方
但我忘记了如果我 select 上传图片,表单 dropzone 的高度会扩展。所以它失败了。 (见截图)
<form id="my-awesome-dropzone" class="dropzone" style="position:relative">
<div class="dropzone-previews"></div>
Username : <input type="text" name="username" style="position:absolute; top:-50px; left:0px; /> <br/>
Email: <input type="text" name="email" style="position:absolute; top:-40px;left:0px; /> <br/>
<button type="submit" style="position:absolute;top:100px;left:0px;">Submit data and files!</button>
</form>
我什至将按钮移到窗体外部并使用 html5 属性 form="my-awesome-dropzone"
但它不起作用。我该怎么办?
我认为您的拖放区重叠提交按钮的问题是由于表单具有 style="position:relative"
和按钮具有 style="position:absolute;top:100px;left:0px;"
。将它们都删除。
你可以这样做,在表格底部填充 20px
,然后将 button
附加到 absolute, bottom: 0px
,它会在表格的末尾,即使如果有上传的图片。
$(function(){
Dropzone.autoDiscover = false;
var myDropzone = new Dropzone("#my-awesome-dropzone", { url: "/file/post"});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="http://www.dropzonejs.com/new-js/dropzone.js"></script>
<link href="http://www.dropzonejs.com/css/dropzone.css" rel="stylesheet"/>
<form id="my-awesome-dropzone" class="dropzone" style="position:relative; padding-bottom: 30px;">
<input type="email" name="username" /><br>
<input type="password" name="password" /><br>
<div class="dropzone-previews"></div>
<button type="submit" style="position: absolute; bottom: 0px;">Submit data and files!</button>
</form>
这似乎是一种实现您想要的目标的奇怪方式。我检查了文档,在“提示与技巧”部分 (https://docs.dropzone.dev/misc/tips) 中明确指出,您可以使用 class dz-message 将元素放入 dropzone 元素中,dropzone 不会创建消息为你。所以我建议你像我一样做,在你的提交按钮上方放置以下元素:
<div class="dz-message">
<div>Upload file here</div>
</div>
不利的一面是 dictDefaultMessage
没有兑现。
此外,如果 javascript 被禁用,那么 div 仍会显示,在这种情况下将其添加到您的 css:
<noscript>
<style>
.dz-message {display:none;}
</style>
</noscript>