html - 选择图像后从文件输入框提交表单
问题描述
我正在尝试从输入 [type=file] 对话框窗口触发表单提交。我正在尝试简化选择图像的过程,然后必须单击另一个按钮才能将表单提交到数据库。
我已经更新了问题以包含下面的屏幕截图和代码,以希望使我遇到的问题更清楚。
注意: 有人问我为什么不向输入按钮添加 id,但我不能,因为文件输入是从函数调用的,并且由于它是 Windows 进程,所以我无法添加/更改它.
这里有一些代码/图片可以更好地说明这个问题。
1 - 用户单击更改图片按钮以更新他们的个人资料图片。此按钮运行简码 [upload-user-profile-avatar]。
2 - 简码触发标准输入文件打开框窗口。
3 - 用户双击文件或单击文件并按下打开按钮后,将自动提交用户个人资料头像插件的表单。
尝试: 我最初开始使用 jQuery 尝试附加到表单并在单击时提交,
jQuery('input[type=file]').change(function(){
nameOfForm.submit();
});
但是我在 SO 帖子中读到其他人正在尝试类似的事情,而 jQuery 不会提交表单,所以他们不得不切换到 javascript,我这样做了(因为 jQuery 没有提交表单)......我出于测试目的想出了这个。
var form = document.getElementsByClassName("update-user-profile-avatar");
var inputs = document.getElementsByTagName('input');
for(var i = 0; i < inputs.length; i++) {
if(inputs[i].type.toLowerCase() == 'file') {
console.log(inputs[i].value);
form.submit();
}
}
所以这很有帮助,我可以看到打开的对话框窗口正在获取正确的文件名,但是仍然没有提交表单,并且我form.submit() is not a function
在控制台中遇到错误。
所以后来我读到 html 表单提交可能有很多奇怪之处,所以尝试这些方面的东西。
jQuery('input[type=file]').change(function(){
for(var i = 0; i < inputs.length; i++) {
if(inputs[i].type.toLowerCase() == 'file') {
console.log(inputs[i].value);
HTMLFormElement.prototype.submit.call(form);
}
}
});
这产生了这个错误:
'submit' called on an object that does not implement interface HTMLFormElement.
所以我想我在这里旋转我的轮子。我觉得这是可行的,我只是没有使用正确的方法来做到这一点。
解决方案
推荐阅读
- angular - 在 Angular 的模块内显示单独的 404 未找到页面
- javascript - 在单击菜单链接时切换类
- jquery - Jsplumb端点绘制样式使端点消失
- android - 在开发人员控制台中更新 firebase 密钥名称
- python - python - 如何定义我可以跨模块和目录有效使用的函数
- php - Woocommerce 通过乘以数量变化来改变产品单价?
- html - HTML - 使用 dec 创建字母数字。代码
- git - Git 元数据 - 有没有办法添加独立于每个分支的 git 元数据?
- c++ - 在运行之前获取 std::thread 的 thread:id?
- php - 使用 Mikrotik API 更改 Mikrotik 中 PPP 秘密的配置文件