问题:如果一个表单输入有名称,submit如何使用Javascript发送表单?
背景:我正在将用户重定向到另一个带有隐藏HTML表单的页面.我无法更改(隐藏)输入上的名称,因为另一个页面位于另一台服务器上,输入需要完全按原样.我的HTML表单如下所示:
<form id="redirectForm" method="post" action="http://www.example.com/">
<input name="search" type="hidden" value="search for this" />
<input name="submit" type="hidden" value="search now" />
</form>
Run Code Online (Sandbox Code Playgroud)
我今天使用以下javascript行自动发送表单:
document.getElementById('redirectForm').submit();
Run Code Online (Sandbox Code Playgroud)
但是,由于一个输入的名称是"submit"(它不能是其他内容,或者其他服务器不会处理请求),document.getElementById('redirectForm').submit因此它会引用输入,因为它会覆盖表单函数submit().
Firefox中的错误消息是:Error: document.getElementById("requestform").submit is not a function.Safari中的类似错误消息.
那么有人可以告诉我们为什么这些选项都不会真正提交表格?我正在尝试做一些更复杂的事情,但我已经将其归结为此尝试找出为什么我似乎无法使用click事件提交此表单并提交()
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
<script type="text/javascript">
$(function() {
$('#submitButton').click(function(e) {
e.preventDefault();
$("#testForm").submit();
});
$('#submitLink').click(function(e) {
e.preventDefault();
$("#testForm").submit();
});
});
</script>
</head>
<body>
<form action="javascript:alert('submitted');" method="post" id="testForm">
<label>Name</label>
<input type="text" name="name" value="" />
<input type="submit" name="submit" value="Submit" id="submitButton" />
<p><a href="#" id="submitLink">Submit Form</a></p>
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
谢谢!