pab*_*obm 18 html javascript forms
有没有办法使用JavaScript保证在所有情况下都可以使用?
我详细说明.常见的方法似乎是:
formElement.submit()
Run Code Online (Sandbox Code Playgroud)
这一切都很好,除了一件事.表单的字段可用作属性formElement,因此如果存在名称或标识为 "text1" 的字段,则可以将其作为formElement.text1.
这意味着如果一个元素被称为"提交"(无论是它的名字还是它的id),那么formElement.submit()它将不起作用.这是因为formElement.submit不是表单的方法,而是具有该名称的字段.不幸的是,提交按钮具有"提交"名称或ID是相当普遍的.
两个例子来说明我的观点.首先,以下内容不起作用,因为表单的元素名称为"submit":
<form name="example" id="example" action="/">
<button type="button" name="submit" onclick="document.example.submit(); return false;">Submit</button>
</form>
Run Code Online (Sandbox Code Playgroud)
以下将工作.唯一的区别是我从表单中删除了名称"submit":
<form name="example" id="example" action="/">
<button type="button" onclick="document.example.submit(); return false;">Submit</button>
</form>
Run Code Online (Sandbox Code Playgroud)
那么,还有其他方法可以使用JavaScript提交HTML表单吗?
Jer*_*ome 32
在JavaScript中创建另一个表单,并将其submit()方法应用于原始表单:
<html>
<script>
function hack() {
var form = document.createElement("form");
var myForm = document.example;
form.submit.apply(myForm);
}
</script>
<form name="example" id="example" method="get" action="">
<input type="hidden" value="43" name="hid">
<button
type="button"
name="submit"
onclick="hack();return false;"
>Submit</button>
</form>
</html>
Run Code Online (Sandbox Code Playgroud)
form.submit是对新鲜和干净的提交方法的引用,然后您使用apply(myForm)原始表单执行它.