Как отключить поведение автоматической отправки при нажатии клавиши ввода? - PullRequest
11 голосов
/ 07 января 2010

Я хочу нажать клавишу ввода, чтобы перейти к p2.htm или p3.htm в соответствии с текстом ввода, который я набирал. И я также хочу нажать кнопку submit1 для предупреждения ('no1') вручную.

Он работает в FireFox, но в IE6, когда я нажимаю клавишу ввода, он отправляет кнопку отправки.

Как я могу сделать все правильно в IE 6, как в FireFox?

Я использую javascript и jQuery.

<input id="Text2"  type="text"  onkeyup="if(event.keyCode==13){go2();}" /> 
<input id="Text3"  type="text"  onkeyup="if(event.keyCode==13){go3();}" /> 

<input id="submit1"  type="submit" value="submit" onclick="alert('no1')" />

<script type="text/javascript">
    function go2()
    {
        window.location = "p2.htm";
    }
    function go3()
    {
        window.location = "p3.htm";
    }
</script>

Ответы [ 7 ]

28 голосов
/ 21 июля 2011

При использовании MVC3 вы можете отключить отправку через Enter, отредактировав вызов BeginForm следующим образом:

@using (Html.BeginForm("SomeAction", "SomeController", FormMethod.Post, new { onkeydown = "return event.keyCode!=13" }))
{
    ...
}
24 голосов
/ 07 января 2010
<form onsubmit="return false"></form>

Это остановит переход формы на следующую страницу после того, как вы нажмете кнопку отправки или нажмете ввод.

8 голосов
/ 07 января 2010

Эта функция должна помочь:

function submitOnEnter(e, page) {
    var key;

    if (window.event)
        key = window.event.keyCode; //IE
    else
        key = e.which; //Firefox & others

    if(key == 13)
        window.location = page;
}

Вы должны назвать это так:

<input id="Text2"  type="text"  onkeyup="submitOnEnter(event, 'p2.html')" /> 
6 голосов
/ 11 мая 2015

Проблема с принятым решением заключается в том, что обычные кнопки отправки больше не работают.Вы должны написать все кнопки.

<form onsubmit="return false"></form>

Вот лучшее решение, которое не ломает кнопки отправки без JavaScript.Это решение просто говорит браузеру не выполнять поведение по умолчанию, когда пользователь нажимает клавишу ввода при вводе формы.

// prevent forms from auto submitting on all inputs
$(document).on("keydown", "input", function(e) {
  if (e.which==13) e.preventDefault();
});
5 голосов
/ 07 января 2010

Изменить тип ввода с «отправить» на «кнопку»

2 голосов
/ 23 февраля 2011
<%@taglib uri="/struts-tags"  prefix="s" %>
<html>
<head>
    <script type="text/javascript">
        function stopsubmit()
        {
            document.ourform.onsubmit="return true";
        }
        function pup()
        {
            return true;
        }
    </script>
</head>
<body>
    <form action="sa.jsp" name="ourform" onsubmit="return false">
        <s:submit action="" onclick="stopsubmit()" theme="simple"></s:submit>
    </form>
</body>

0 голосов
/ 22 марта 2018

Вы можете сделать с помощью:

<script type="text/javascript">
    $(document).ready(function() {
       $(".div/formClass").bind("keypress", function(e) {
          if (e.keyCode == 13) {
             return false;
          }
       });
    });
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...