1

我有以下表格:

<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 未定义。”

我尝试了什么?以下示例和代码:

一切都没有成功。这个表单也有一些 jQuery(在另一个 .js 文件中),它使用连字符的名称可以正常工作。

为什么提交调用不起作用?

编辑:我已经尝试document.getElementById('vintro-upload-form').submit();按照这个问题的答案中的建议使用,但是,这仍然失败。我的(Firefox)调试器说它不是一个函数。Chrome 的调试器解释了一点:“Uncaught TypeError: Property 'submit' of object # is not a function”(同时我要去谷歌这个。)

由于我的声望低于 100:好吧,事实证明,我问错了问题。

这是我找到的答案: Submitting Form Via Javascript, form defined in external PHP file

也检查接受的答案。

4

3 回答 3

7

这个JavaScript:

document.forms["vintro-upload-form"].elements['file'].value

正在寻找表单标签的 NAME 属性:

document.forms[{form_name}].elements[{field_name}].value

你只有一个身份证。将 ID 的值复制到 NAME,就完成了。

但是,document.getElementById() 是使用纯 JavaScript 执行此操作的首选现代方式。

但是:您不能有一个名为“提交”的提交/按钮。

当您这样做并调用 JavaScript submit() 函数时,您会遇到冲突。

于 2012-04-25T20:31:12.920 回答
1

您只需要:document.getElementById('nameofform').submit()通过 id 查找元素比通过名称查找元素更容易。

另一种方法是按名称获取元素,您可以使用document.getElementsByName('nameofform')...但是它返回一个数组,因此您需要迭代该数组以查找需要上传哪些表单。所以,我认为你应该使用id。

于 2012-04-25T20:11:32.183 回答
0

您的表单名称包含不能在 JavaScript 标识符中使用的字符(破折号)。改为使用document.getElementById('vintro-upload-form').submit();

于 2012-04-25T20:12:33.243 回答