使用名为Submit的Javascript输入提交表单

使用名为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

我有一个HTML表单,其中一个输入名为
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
  • 无法对后端进行任何修改
PS:这是我关于堆栈溢出的第一个问题,喜欢这个网站。

你可以试着打电话

document.forms[0].submit();
假设文档上只有一个表单, 或者,如果这不起作用,您可以尝试调用按钮上的click方法

form.submit.click();

希望通过以下操作有助于将submit作为一个参数:

<input value="findItems" name="submit[]" type="hidden" />
在上面的代码中,我们添加了submit的输入类型,并将其分配给id
send
,以便于从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处理响应。