提交按钮在输入时不起作用

时间:2015-07-14 12:13:48

标签: html forms submit

我的表单上有几个“提交”输入(这是由我正在使用的框架引起的),因此要控制在“Enter”(以及Android键盘的“Go”按钮上实际激活的按钮) ),我添加了这个标记:

<input type="submit" style="position:absolute;top:0;left:-100px;"
onclick="$('#DefaultButton').click();return false;" />

我将它放在最开头,所以它首先按顺序排列,但仍在表单内部。 这在我的一个应用程序中运行良好,但在另一个应用程序中根本不起作用!

更令人惊讶的是,在其他应用程序中,有一个单一提交的情况,因此它应该作为默认工作而不需要任何额外的工作,但它从未起作用。即使我添加这个隐藏的提交 - 它也不起作用。我已经通过javascript检查了页面上提交的数量 - 它向我显示了2:一个是用户可见的,另一个是我正在添加的。

好吧,我用javascript来处理按键,它正在工作,但我不喜欢这种方式 - 我更喜欢自然的方式,当第一次提交时作为默认按钮。

另外,我已经检查了手机 - 我认为会出现“Go”按钮不起作用的问题 - 但它正在运行。所以它不能仅在桌面浏览器中使用。

这可能是什么问题?我的提交是否缺少任何属性?

我无法发布整个页面,因为它很大,这里是“真实”提交按钮的简化标记(它由框架生成):

<input onclick="*Ajax javascript*; return false;" type="submit"
name="DefaultButton" value="Continue" id="DefaultButton" tabindex="17"
class="Button" />

这里也是表单标签(也是由框架生成的):

<form method="post" action="Signup.aspx" onsubmit="javascript:return WebForm_OnSubmit();"
id="WebForm1" name="WebForm1">

更新。我想再次注意,我通过处理onkeypress for keyCode == 13使其工作,我只是想知道为什么正常的提交按钮不会对Enter做出反应,因为它应该。

4 个答案:

答案 0 :(得分:0)

请改为尝试:

$('#DefaultButton').trigger("click");

javascript:

中删除onsubmit
onsubmit="return WebForm_OnSubmit();"

答案 1 :(得分:0)

如果您想在输入

的表单字段中提交,请尝试此操作
$(document).keypress(function(e) {
  if(e.which == 13 && e.target.type=="text") {
    if (WebForm_OnSubmit()) $("WebForm1").submit();
  }
});

如果需要,您也可以删除所有提交按钮

$("input[type='submit']").remove()

答案 2 :(得分:0)

将您的输入和按钮放入表单标记,并将脚本直接放在html文档中。使用您要使用的功能更改onclick值。当用户点击进入或按下提交按钮时,html中的脚本会告诉表单提交。

 <form id="Form-v2" action="#">

<input type="text" name="search_field"  placeholder="Enter a movie" value="" 
id="search_field" title="Enter a movie here" class="blink search-field"  />
<input type="submit" value="GO!" class="search-button" />       
 </form>

    <script>
    //submit the form
    $( "#Form-v2" ).submit(function( event ) {
      event.preventDefault();
    });
         </script>

答案 3 :(得分:0)

这很可能是由于服务器端实施安排问题造成的,因为在对HTML进行编码时,表单是按提交按钮点击预期提交的,因此服务器端可能会尝试监听{ {1}}值,但是由于Enter键绕过了按一下按钮的需要,因此省略了提交值,并且该表单不适用于服务器代码(它会被忽略)。

这也说明了$_POST["submit"](有点脏)修复程序的工作原理,因为您通过本机HTML表单提交支持再次将按键绑定到了提交按钮动作,这等效于按下第一个声明的提交按钮,页面。

我说onkeypress是一个肮脏的修复程序的原因意味着,如果所有工具都可以匹配,则现有的兼容可访问性工具或过时的考虑因素将不适合代码仅对1个键做出反应。这个特定的代码。

您可以考虑使用适当的解决方案在URL查询onkeypress中分配form_id或服务器?form_id=123预先填充的隐藏变量,以使您确定它是服务器正在等待。将<input type="hidden" name="form_id" value="123">保留在会话中,即使用户使用Enter或鼠标单击提交表单,此操作也将起作用。