使用名为Submit的Javascript输入提交表单
我有一个HTML表单,其中一个输入名为使用名为Submit的Javascript输入提交表单,javascript,html,forms,post,Javascript,Html,Forms,Post,我有一个HTML表单,其中一个输入名为submit 我在表单中还有一个格式很好的HTML元素,它应该在单击时提交表单 我注意到form.submit被名为submit的输入字段覆盖,因此我不能再调用form.submit() 我搜索了一个答案,一般的回答是重命名输入。然而,我不能这样做提交大多数在请求正文中显示为带值的参数 示例代码: <form action="http://example.com/search" method="POST"> <!-- other g
submit
我在表单中还有一个格式很好的HTML元素,它应该在单击时提交表单
我注意到form.submit被名为submit
的输入字段覆盖,因此我不能再调用form.submit()
我搜索了一个答案,一般的回答是重命名输入。然而,我不能这样做<代码>提交大多数在请求正文中显示为带值的参数
示例代码:
<form action="http://example.com/search" method="POST">
<!-- other generated parameters -->
<input value="findItems" name="submit" type="hidden">
<a onclick="event.stopPropagation();this.parentNode.submit()" href="javascript:{}">
<!-- this is dinamically generated
and generally much more complex --->
<strong>search</strong>
</a>
</form>
请记住,我的限制条件如下:
<input value="findItems" name="submit[]" type="hidden" />
- 用户单击以提交表单的元素包含其他格式化元素
是请求正文中的必需的参数submit
- 请求方法必须是POST
- 无法对后端进行任何修改
document.forms[0].submit();
假设文档上只有一个表单,
或者,如果这不起作用,您可以尝试调用按钮上的click方法
form.submit.click();
希望通过以下操作有助于将submit作为一个参数:
<input value="findItems" name="submit[]" type="hidden" />
在上面的代码中,我们添加了submit的输入类型,并将其分配给idsend
,以便于从DOM访问它
此外,我们还在搜索
链接的href
中添加了一个函数调用goo()
。现在我们将定义该函数和另一个触发事件的函数:
function goo(){
fireEvent(document.getElementById('send'),'click');
}
function fireEvent(obj, evt){
var fireOnThis = obj;
if( document.createEvent ) {
var evObj = document.createEvent('MouseEvents');
evObj.initEvent( evt, true, false );
fireOnThis.dispatchEvent( evObj );
}
else if( document.createEventObject ) { //IE
var evObj = document.createEventObject();
fireOnThis.fireEvent( 'on' + evt, evObj );
}
}
签出此演示:
提交按钮可以使用CSS隐藏style=“可见性:隐藏”
触发事件的功能引用自我尝试了一些可能有用的方法。由于我们显然无法使用
表单.submit()
,因此我们可以使用同步AJAX调用提交表单详细信息
jQuery代码告诉您我在说什么:
<script>
function submitForm(){
$.ajax({
url: "http://example.com/search",
data: {
submit : $("#submit").val()
},
success: function(){alert("It worked!");},
error: function (xhr, textStatus, errorThrown){alert(errorThrown)},
async: false
});
}
</script>
函数submitForm(){
$.ajax({
url:“http://example.com/search",
数据:{
提交:$(“#提交”).val()
},
成功:函数(){alert(“它工作了!”;},
错误:函数(xhr,textStatus,errorhown){alert(errorhown)},
异步:false
});
}
以及HTML:
<form id="form1" name="form1" method="POST">
<input type="hidden" id="submit" name="submit"/>
<input type="button" value="Submit" onclick="javascript:submitForm()">
</form>
只是一个旁注,您没有一个名为submit属性的输入,而是名为submit;)请检查我的答案的更新版本。@vbo请仔细阅读问题中的“背景”,您的意思是要知道这两个问题是不同的。听起来是个不错的计划。不幸的是,我有一个可变数量的表单,通常在0和200之间,所以我需要找到一个我想要提交的表单form.submit.click()
不过似乎是一个不错的选择。添加[]似乎是一个奇怪的黑客行为,但是您的第二个解决方案看起来很有希望,我将很快对其进行测试:)它可以工作!谢谢,最好的解决方案是创建一个隐藏的提交按钮,并触发提交按钮的点击事件,忘记了指定这个,我正在将表单提交到另一个域。据我所知,AJAX不允许这样做,另外,我还希望导航到该站点,而不是使用Javascript处理响应。