gpt4 book ai didi

Drupal 7 - 使用 managed_file 类型上传文件后自动提交表单

转载 作者:行者123 更新时间:2023-12-04 21:21:13 25 4
gpt4 key购买 nike

我得到了一个只有一个字段的表格。该字段属于“managed_field”类型。当您单击“上传”按钮时,进度条将显示文件上传的进度。之后,您将需要提交表单以保存文件。

因为当您选择一个文件然后单击表单提交按钮而不是“上传”按钮时,进度条不会显示。我想在上传(通过“上传”按钮)完成后触发表单提交。

我现在的表格是这样的:

$form['#attributes'] = array('enctype' => "multipart/form-data");

$form['pdf_upload'] = array(
'#title' => t('Upload PDF'),
'#type' => 'managed_file',
'#required' => TRUE,
'#progress_message' => t('Please wait...'),
'#progress_indicator' => 'bar',
'#upload_validators' => array(
'file_validate_extensions' => array('pdf'),
)

);

$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Save'),
);

文件模块通过对 file/ajax/* uri 的 ajax 回调来处理文件。回调返回 ajax 命令。

基本上我想添加一个额外的 ajax 命令,在文件上传完成后触发表单提交。

最佳答案

@Clive 这不是我的选择,因为我希望用户自己开始上传。您的回答虽然给了我一些想法,但我想出了以下解决方案。

Drupal.behaviors.fileUpload = {
attach: function(context, settings) {
jQuery("body").ajaxComplete(function(event,request, settings){
// Only do something when on the orders page of a user
// This is where I use the upload functionality
if(window.location.pathname.match(/user\/\d+\/orders/)) {
// Check if the AjaxComplete was triggered by the managed file upload
// pdf_upload_XXX is my form name
// Get the form-build-id from the URL
if (form_build_id = settings.url.match(/file\/ajax\/pdf_upload_\d*\/(.*)$/)) {
// Check if the upload has completed by checking if there is a Delete button in the form that has the form-build-id
if(jQuery('[value="'+form_build_id[1]+'"]').closest('form').find('[id$=remove-button]').length) {
// Click the submit button
jQuery('[value="'+form_build_id[1]+'"]').closest('form').find('[id^=edit-submit]').click();
}
}
}
});

}
}

希望这对其他用户也有用。

Thnx Clive 让我走上了正确的道路。

关于Drupal 7 - 使用 managed_file 类型上传文件后自动提交表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11774842/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com