Javascript: введите для отправки
-
06-07-2019 - |
Вопрос
Здравствуйте, это то, что у меня есть в заголовке моего файла:
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>
<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 и будет работать в большем количестве случаев.