相关疑难解决方法(0)

通过按Enter键阻止用户提交表单

我在一个网站上进行了一项调查,用户点击输入(我不知道为什么)并在不点击提交按钮的情况下意外提交调查(表格)似乎存在一些问题.有办法防止这种情况吗?

我在调查中使用HTML,PHP 5.2.9和jQuery.

html forms jquery form-submit

732
推荐指数
22
解决办法
54万
查看次数

带有单个文本输入字段的Bootstrap模式对话框始终在Enter键上关闭

为什么这个带有一个文本字段的简单模态对话框(和NO按钮)在焦点位于字段上并且按下Enter时忽略?

<a href="#dlgAddDeviceFolder" class="add-device-folder" data-toggle="modal">New Folder</a>

<div id="dlgAddDeviceFolder" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="dlgAddFolderLabel" aria-hidden="true">
  <div class="modal-header">
    <!--<a type="button" class="close" data-dismiss="modal" aria-hidden="true">×</a>-->
    <h3 id="myModalLabel">Add Device Folder</h3>
  </div>

  <div class="modal-body">
    <form class="form-horizontal">
      <div class="control-group">
        <label class="control-label" for="dlgAddDeviceFolder_name">Folder Name</label>
        <div class="controls">
          <input id="dlgAddDeviceFolder_name" type="text" placeholder="Folder Name" autocomplete="off">
        </div>
      </div>
    </form>
  </div>

  <div class="modal-footer">
    <!--<a type="button" class="btn" data-dismiss="modal" aria-hidden="true">Cancel</a>-->
    <!--<a id="dlgAddDeviceFolder_btnOk" type="button" class="btn btn-primary">OK</a>-->
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

这里有广泛的讨论,它表明它是一个按钮问题(我在按钮和锚标签上放了type ="button".我已经将按钮标签转换为锚点).但是,我尝试了所有提出的解决方案,最后只是完全注释掉按钮,它仍然会发生.

请注意,如果您只是复制相同的文本输入并有两个字段,则问题就会消失(关注任一文本字段都不会导致Enter解除)

forms modal-dialog twitter-bootstrap

9
推荐指数
3
解决办法
2万
查看次数

通过按Enter#2阻止用户提交表单

在上一个问题中,我问了同样的问题,但是当用户在文本框中时,我没有阻止提交的答案.

所以基本上我需要的是能够阻止一个人提交表单,除非明确点击提交按钮.

编辑:

基本上这样做的主要原因是这是雇主调查.在这方面的人不会是技术上最精明的,我正在为此做的客户要求这样做.

html javascript jquery

5
推荐指数
2
解决办法
6212
查看次数

表单在keyup上使用submit()提交两次

我有一个与此类似的jQuery/HTML代码:

<form action="/SomeAction" method="post">
  <input id="my-textbox" type="text" placeholder="Write something and press enter to continue..." />
</form>

<script type="text/javascript">
 $(function() {
     $('#my-textbox').keyup(function(e) {
        var $textbox = $(this);
        if ($textbox.val().length > 0 && e.keyCode == 13) {
           $textbox.parent('form').submit();
        }
     });
 });
</script>
Run Code Online (Sandbox Code Playgroud)

目的是在用户按下"Enter"键时自动提交表单.我经常使用Firefox,所以在我使用谷歌浏览器和Internet Explorer进行测试之前,一切都还可以.

当我在后面的浏览器中按下Enter键时,有时我会提交两次表单.这很容易被注意到,因为我会在我的数据库中获得重复的条目,并且我会看到两个POST使用Fiddler.

经过一些测试,我发现我的问题是jQuery代码,因为文本框会在没有它的情况下自动提交,并且POST在某些浏览器中使用此代码会产生第二个代码.

我的问题是:

为什么浏览器不能巧妙地阻止第二个表单发布(就像Firefox在我的测试中所做的那样)?

我是否应该在所有平台的所有主流浏览器中都期待此行为?

有没有办法改进这个代码所以我使用JavaScript执行提交,但是没有提交两次提交的表单?

javascript forms jquery javascript-events double-submit-problem

3
推荐指数
2
解决办法
5275
查看次数