簡體   English   中英

HTML:將表單字段復制到另一個表單,包括FILE輸入字段?

[英]HTML: Copy form fields to another form including FILE input field?

我之前看到,出於安全原因,無法使用javascript設置表單文件輸入字段值。

我只是想將一個FILE輸入復制到另一個表單並發布,我搜索了一個工作並找不到任何東西,是否可能?

更新:我的代碼:

function prepareUpload( filevalue ){

document.getElementById('logo').value =filevalue;
var mform = document.getElementById('sleeker');
    ajaxUpload( mform,'<?php echo base_url(); ?>'); // a methods to upload...
}

<input class="input-file-upload" type="file" size="20" name="logodummy" id="logodummy" onchange="prepareUpload( this.value );" />

<form action="" method="post" name="sleeker" id="sleeker" enctype="multipart/form-data" onbeforesubmit="return false;">
            <p><input type="hidden" name="logo" id="logo" /></p>
        </form>

其他任何文件輸入工作正常,我可以收到$ _POST,但$ _FILES沒有值。 而且這個代碼也很好。 我覺得這個系數夠了嗎?

是的,您可以將<input type="file">放在HTML表單之外,然后使用onChange事件填充已發布的表單中的<input type="hidden">

<input type="file" 
       onchange="document.getElementById('hidden_file').value = this.value;" />

<form method="POST">
    <input type="hidden" id="hidden_file" value="" />
    <input type="submit" />
</form>

但是,在現代瀏覽器中,您只能訪問文件名,而不能訪問完整路徑。 您可能需要查看以下Stack Overflow帖子以獲取有關此主題的更多信息:


更新:

最初的問題讓我覺得你只需要將“文件名”復制到另一個HTML表單,而不是整個<input type="file">表示。

繼續更新,我假設你的意思是這樣的:

<input type="file" 
       onchange="document.getElementById('hidden_file').value = this.value;" />

<form method="POST">
    <input type="file" id="hidden_file" value="" />
    <input type="submit" />
</form>

不幸的是,上述方法無效。 如果您嘗試上面的示例,Firefox將返回"Security error code: 1000"

至於一些解決方法,您可能需要查看David Dorward的建議:

您可以將文件輸入移動到另一個表單(使用appendChild或insertBefore),提交表單,然后將其移回。

我沒有對此進行過深入測試,但它似乎適用於Firefox。

使用cloneNode

var copy = file_input.cloneNode(1);
form2.appendChild(copy);

除了在jQuery中,與cloneNode非常相似

在xulrunner瀏覽器(如firefox)中,我成功使用了以下內容:

$('input:file').clone().appendTo($('#mainform'));

這應該將所有文件輸入對象復制到id = mainform的表單中。

避免在要克隆的對象中使用id屬性。 id應始終是唯一的。

我意識到派對可能會遲到,但是使用HTML5,您可以使用“form”屬性來定位表單,例如[form id =“the_form”] ... [/ form] .... [輸入form =“the_form type =”file“... /]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM