使用JQuery实现Ctrl+Enter提交表单的方法


Posted in Javascript onOctober 22, 2015

有时候我们为了省事就操作键盘组合键去代替使用鼠标,我们今天就使用JQuery实现Ctrl+Enter提交表单。

我们发帖时,在内容输入框中输入完内容后,可以点击“提交”按钮来发表内容。可是,如果你够“懒”,你可以不用动鼠标,只需按住键盘上的Ctrl+Enter键,即可提交表单,完成内容发布。
当然,由于输入框是一个多行文本输入框textarea,我们知道,在textarea中按Enter(回车)键可以换行,并不能直接提交表单(submit),而默认情况下,浏览器忽略了Ctrl键。那么我们可以通过Javascript脚本来控制使用Ctrl+Enter键来组合完成表单提交,本文结合示例讲解基于jQuery的Ctrl+Enter提交表单效果。
HTML
我们在页面body中,放置一个textarea输入框,一个提交按钮button,以及展示提交后的结果div#result。

<div id="result"></div> 
<textarea name="msg" id="msg" placeholder="输入内容" autofocus></textarea> 
<button type="submit">提 交</button><span>可按“Ctrl+Enter”键提交</span>

CSS
简单的写几行css,修饰textarea输入框、button提交按钮以及提交后显示内容的.post样式。

textarea {display:block; width:450px;height:100px;border: 1px solid #ccc;} 
button {border: 1px solid #ccc; background: #ececec;-webkit-border-radius: 3px; 
-moz-border-radius: 3px;margin-top: 10px;padding: 5px 20px; cursor:pointer} 
.post{width: 230px;border: 1px solid #ccc;background: #ececec; padding: 10px; margin: 10px 0;}

jQuery
首先必须预先载入jQuery库。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>

我们来编写一个简单的插件ctrlEnter(),其中带两个参数,第一个参数btns表示插件作用的元素,第二个参数fn表示调用的函数。我们在插件中加入函数performAction()来确保插件内部调用。接着插件开始侦听键盘事件,当按下keydown键盘中的某个键时,判断如果按下的是Enter(回车)键和Ctrl键,则调用performAction(),并阻止默认的回车换行行为。然后我们还应该在button上绑定click事件调用performAction(),这样就可以通过单击按钮也可以提交内容了。

$.fn.ctrlEnter = function (btns, fn) { 
   var thiz = $(this); 
   btns = $(btns); 
     
   function performAction (e) { 
     fn.call(thiz, e); 
   }; 
   thiz.bind("keydown", function (e) { 
    if (e.keyCode === 13 && e.ctrlKey) { 
      performAction(e); 
      e.preventDefault(); //阻止默认回车换行 
    } 
   }); 
   btns.bind("click", performAction); 
}

最后,调用ctrlEnter,将textarea中的内容提交到#result中,并且将回车替换为br,并且清空textarea。当然实际应用中,应该将内容post给后台处理程序,让后台程序php等处理内容及数据交互。

$("#msg").ctrlEnter("button", function () { 
    $("<p class='post'></p>").append(this.val().replace(/\n/g, "<br/>")).fadeIn('slow') 
.appendTo("#result"); 
    this.val(""); 
});

以上就是如何使用JQuery实现Ctrl+Enter提交表单的方法,大家有没有一个清晰的思路了,希望这篇文章对大家的学习有所帮助。

Javascript 相关文章推荐
Web版彷 Visual Studio 2003 颜色选择器
Jan 09 Javascript
javascript,jquery闭包概念分析
Jun 19 Javascript
浅谈JSON.parse()和JSON.stringify()
Jul 14 Javascript
微信小程序 首页制作简单实例
Apr 07 Javascript
vue实现图片滚动的示例代码(类似走马灯效果)
Mar 03 Javascript
jQuery实现获取选中复选框的值实例详解
Jun 28 jQuery
vue观察模式浅析
Sep 25 Javascript
element-ui upload组件多文件上传的示例代码
Oct 17 Javascript
基于Vue实现图片在指定区域内移动的思路详解
Nov 11 Javascript
Bootstrap简单实用的表单验证插件BootstrapValidator用法实例详解
Mar 29 Javascript
解决Vue的项目使用Element ui 走马灯无法实现的问题
Aug 03 Javascript
用几道面试题来看JavaScript执行机制
Apr 30 Javascript
实例详解angularjs和ajax的结合使用
Oct 22 #Javascript
jQuery多级手风琴菜单实例讲解
Oct 22 #Javascript
使用jquery插件qrcode生成二维码
Oct 22 #Javascript
JavaScrip调试技巧之断点调试
Oct 22 #Javascript
浅析JavaScript 调试方法和技巧
Oct 22 #Javascript
JS+CSS实现的竖向简洁折叠菜单效果代码
Oct 22 #Javascript
浅谈node.js中async异步编程
Oct 22 #Javascript
You might like
php中10个不同等级压缩优化图片操作示例
2016/11/14 PHP
js 匿名调用实现代码
2009/06/19 Javascript
JQuery模板插件 jquery.tmpl 动态ajax扩展
2011/11/10 Javascript
如何在一个页面显示多个百度地图
2013/04/07 Javascript
JS如何将UTC格式时间转本地格式
2013/09/04 Javascript
JS实现至少包含字母、大小写数字、字符的密码等级的两种方法
2015/02/03 Javascript
JavaScript代码实现禁止右键、禁选择、禁粘贴、禁shift、禁ctrl、禁alt
2015/11/17 Javascript
json对象转为字符串,当做参数传递时加密解密的实现方法
2016/06/29 Javascript
用jQuery实现可输入多选下拉组合框实例代码
2017/01/18 Javascript
利用Vue.js实现checkbox的全选反选效果
2017/01/18 Javascript
Bootstrap常用组件学习(整理)
2017/03/24 Javascript
浅谈Vuejs Prop基本用法
2017/08/17 Javascript
JavaScript代码判断输入的字符串是否含有特殊字符和表情代码实例
2017/08/17 Javascript
Angular.js实现获取验证码倒计时60秒按钮的简单方法
2017/10/18 Javascript
jQuery除指定区域外点击任何地方隐藏DIV功能
2017/11/13 jQuery
vue.js项目nginx部署教程
2018/04/05 Javascript
Openlayers绘制地图标注
2020/09/28 Javascript
[33:09]完美世界DOTA2联赛循环赛 Forest vs DM BO2第二场 10.29
2020/10/29 DOTA
Python的Flask框架应用调用Redis队列数据的方法
2016/06/06 Python
利用python程序生成word和PDF文档的方法
2017/02/14 Python
python 多线程中子线程和主线程相互通信方法
2018/11/09 Python
Python小进度条显示代码
2019/03/05 Python
python实现雪花飘落效果实例讲解
2019/06/18 Python
Python如何筛选序列中的元素的方法实现
2019/07/15 Python
详解Pytorch显存动态分配规律探索
2020/11/17 Python
python实现企业微信定时发送文本消息的实例代码
2020/11/25 Python
pycharm进入时每次都是insert模式的解决方式
2021/02/05 Python
美国领先的奢侈手表在线零售商:WatchMaxx
2017/12/17 全球购物
Jar包的作用是什么
2014/03/30 面试题
C/C++程序员常见面试题一
2012/12/08 面试题
高三励志标语
2014/06/05 职场文书
计算机系统管理员求职信
2014/06/20 职场文书
安全演讲稿开场白
2014/08/25 职场文书
寒假安全保证书
2015/02/28 职场文书
对学校的意见和建议
2015/06/04 职场文书
工作表现证明
2015/06/15 职场文书