我知道这个问题可能是多余的,但在查看了stackoverflow上的几乎所有相关问题之后,我仍然无法让我的问题“消失”。问题是:
按下“enter”键,提交textarea内容而不是创建新行。
这就是我正在使用的:
jQuery(来自这里类似问题的答案):
$('#message').keypress(function(e){
var code = (e.keyCode ? e.keyCode : e.which);
if (code == 13){
$('#form').submit();
}
});
HTML:
<div class="message">
<form name="form" class="form" id="form" action="chatsendmesg.php" method="POST">
<textarea rows="2" name="message" id="message" class="message" placeholder="RM911 Chat" cols="26"></textarea>
<input id="submit" class="submit" type="submit" value="Send" name="submit">
</form>
即使使用此代码,按下“enter”仍然会创建一个新行而不是提交。到底是什么我不明白?是缺少preventDefault
吗?
提前致谢, 添
答案 0 :(得分:1)
这有效......
<html>
<head>
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script>
$(function(){
$("#message").keypress(function(e){
var code = (e.keyCode ? e.keyCode : e.which);
if (code == 13){
$("#form1").submit();
}
});
});
</script>
</head>
<body>
<div id="message">
<form name="form1" class="form1" id="form1" action="chatsendmesg.php" method="post">
<textarea rows="2" name="message" id="message" class="message" placeholder="RM911 Chat" cols="26"></textarea>
<input id="submit1" class="submit1" type="submit" value="Send" name="submit1" />
</form>
</div>
</body>
</html>
答案 1 :(得分:0)
preventDefault
将不起作用,因为对于textarea,默认操作是将字符(由击键表示)放在文本区域中。也就是说,您的所有按键都不会进入文本区域。
为了防止只有新行被输入文本区域,您需要停止keypress
事件的传播,但仅当按下的键是ENTER时,才会这样:
$("#void").keypress(function(e) {
var code = (e.keyCode ? e.keyCode : e.which);
if (code == 13){
$('#form').submit();
return false; // stop propagation of the keypress
}
return true;
});