Javascript: введите для отправки - PullRequest
1 голос
/ 26 октября 2009

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

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 сейчас.

Ответы [ 6 ]

2 голосов
/ 26 октября 2009

Если вы хотите использовать 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 - идентификатор вашей текстовой области.

2 голосов
/ 26 октября 2009

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

function entsub(e) {
    if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)) {
        write1();
    } 
    return true;
}
2 голосов
/ 26 октября 2009

Ну, я не уверен, что делает 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;
    }
}
1 голос
/ 26 октября 2009

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

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

0 голосов
/ 26 октября 2009

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

0 голосов
/ 26 октября 2009

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

...