让textarea支持ctrl+enter提交表单
1、让textarea支持ctrl+enter提交表单。
2、ctrl+enter提交表单之前,调用自己的验证函数,比如验证内容是否为空。
3、比如textarea是空的,我按ctrl+enter提交表单,会提示不要发空信息,似乎是正常的。可这时,会产生一个空行,再按一次,又会产生一个换行。我们就来解决这个问题。
表单代码:
<form method="post" name="comment">
<textarea id="comments" onkeydown= "网页特效:if(event.ctrlkey && event.keycode==13)if(这里是你的验证函数()) document.comment.submit();else return false;"></textarea>
</form>
在js里这样写:
function 验证函数(){
if{
return false
}
else{
return true
}
}
在表单里后面的else return false是为了防止有无谓的换行。
而在js里要return true,是为了防止return false后无法键入字符
1.现在关键是要取得各键对应的键值,先运行一下下面的脚本测试键值:
<script event="onkeydown" for="document">
alert(event.keycode)
</script>
2.好了,测试到回车键的键值为13,ctrl键的键值为17,于是有:
<form action="test.asp教程" onkeydown="if(event.keycode==17&&event.keycode==13)this.submit()">
<textarea name="content"></textarea>
</form>
3.测试一下看看?没成功,因为每次keydown事件只有一个键,也就是说event,keycode不可能同时等于13和17,这时要同时捕获ctrl键,就要用event.ctrlkey了,修改如下:
<form action="test.asp" onkeydown="if(event.ctrlkey&&event.keycode==13)this.submit()">
<textarea name="content"></textarea>
</form>
提示:按键的事件句柄除了onkeydown外,还有onkeyup和onkeypress;判断左边的ctrl键还可以用event.ctrlleft。
特别提示
代码运行后在多行文本框内按下ctrl+enter键,表单将自动提交效果如图1.4.30所示。