Вопрос

Здравствуйте, это то, что у меня есть в заголовке моего файла:

function entsub(event)
        {
              if (event && event.which == 13) 
                write1();
              else
            return true;

        }

и в теле моя форма:

<form id="writeform" name="writeform">
  Message: <br />
  <textarea name="message" rows="3" id="message" style="width:90%;" onkeypress="return entsub(event)"></textarea>

  <br />
  <input name="send" type="button" id="send" value="Send" onclick="write1()" />
  <span id="sent"></span>
  &nbsp;&nbsp;&nbsp; <input type="reset" value="Reset" />
  </form>

Мне нужно, чтобы это работало так, что когда я нажимаю клавишу ввода, когда я нахожусь в текстовой области, он не создает новую строку, а отправляет ее [см. мой <input type="button">]

Но это не сработает! Он продолжает создавать новую строку ... Используя IE8 сейчас.

Это было полезно?

Решение

Используйте keyCode вместо которого.

В зависимости от браузера вам нужно запретить действие по умолчанию. Изучите event.cancelBubble и event.returnValue для IE, а также event.stopPropagation () и event.preventDefault () для Firefox.

Другие советы

Ну, я не уверен, что write1() делает, но было бы разумно возвращать false, когда условие выполнено.

function entsub(event)
{
    if (event && event.keyCode == 13) {
        write1();
        return false; //Return false to prevent default execution
                      //Some browsers use event.preventDefault() etc.
    }else{
        return true;
    }
}

Обычно кросс-браузерный тест выглядит следующим образом:

function entsub(e) {
    if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)) {
        write1();
    } 
    return true;
}

Если вы хотите использовать jquery, вы можете сделать это:

        $(document).ready(function() {

            $("#txtTest").keypress(function(e) {
                var code = (e.keyCode ? e.keyCode : e.which);

                if (code == 13) {
                    doSomething();
                    return false;
                }
            });

        });

        function doSomething() {
            alert("I did it!");
        }

где txtTest - это идентификатор вашей текстовой области.

Что касается не связанных с js способов, я почти уверен, что вы можете просто использовать ввод типа = " submit " и он будет использовать Enter для отправки формы. В этот момент вы просто перенесете свое событие в onsubmit.

Более понятный способ - перейти с <input type="button"> на <input type="submit"> и переместить onclick="..." на onsubmit="..." в форме. Это не потребует слишком много подверженного ошибкам JavaScript и будет работать в большем количестве случаев.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top