我有以下表格:
<form id="vintro-upload-form" action="{url}?nexturl={nextUrl}" method="post" enctype="multipart/form-data" >
<input name="file" type="file"/>
<input name="token" type="hidden" value=""/>
<input value="Upload Video File" type="button" name="submit" onClick="checkFile()" class="button" />
</form>
和以下 javascript:
<script>
function checkFile(){
var fileVal = document.forms["vintro-upload-form"].elements['file'].value;
//RegEx for valid file name and extensions.
if(fileVal != ""){vintro-upload-form.submit();}
else {alert('Please select the Video file.');}
}
</script>
什么有效? fileVal 分配很好。提交不起作用,当我检查调试器时,它说:“vintro 未定义。”
我尝试了什么? 以下示例和代码:
- > http://www.w3schools.com/jsref/met_form_submit.asp
- > http://www.javascript-coder.com/javascript-form/javascript-form-submit.phtml
- document.vintro-upload-form.submit();
- document.forms["vintro-upload-form"].submit();
- document.getElementById("vintro-upload-form").submit();
- 将破折号/连字符更改为下划线
一切都没有成功。这种形式也有一些 jQuery(在另一个 .js 文件中),并且它与带连字符的名称一起正常运行。
为什么提交调用不起作用?
编辑:
我已经尝试使用 document.getElementById('vintro-upload-form').submit();
按照这个问题的答案中的建议,但是,这仍然失败。我的 (Firefox) 调试器说它不是函数。 Chrome 的调试器解释得更多一点:“未捕获的 TypeError:对象 # 的属性‘提交’不是一个函数”(同时我要去谷歌搜索这个。)
因为我的声望不到 100: 好吧,事实证明,我问错了问题。
这是我找到的答案: Submitting Form Via Javascript, form defined in external PHP file
同时检查已接受的答案。
最佳答案
这个 JavaScript:
document.forms["vintro-upload-form"].elements['file'].value
正在寻找表单标签的 NAME 属性:
document.forms[{form_name}].elements[{field_name}].value
您只有一个 ID。将 ID 的值复制到 NAME 即可。
但是,document.getElementById() 是使用纯 JavaScript 执行此操作的首选现代方法。
但是:您不能有名为“提交”的提交/按钮。
当您这样做并调用 JavaScript submit() 函数时,您会遇到冲突。
关于php - JavaScript: 表单名称.submit();不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10322998/