使用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 相关文章推荐
JavaScript实现多维数组的方法
Nov 20 Javascript
JS实现5秒钟自动封锁div层的方法
Feb 20 Javascript
Jquery常用的方法汇总
Sep 01 Javascript
javascript每日必学之条件分支
Feb 17 Javascript
浅谈AngularJS中ng-class的使用方法
Nov 11 Javascript
ES6模块化的import和export用法方法总结
Aug 08 Javascript
微信小程序仿美团城市选择
Jun 06 Javascript
微信小程序如何连接Java后台
Aug 08 Javascript
JS实现横向轮播图(初级版)
Jun 24 Javascript
JS实现前端路由功能示例【原生路由】
May 29 Javascript
JavaScript indexOf()原理及使用方法详解
Jul 09 Javascript
vue+echarts+datav大屏数据展示及实现中国地图省市县下钻功能
Nov 16 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的ZipArchive类用法实例
2014/10/20 PHP
PHP is_array() 检测变量是否是数组的实现方法
2016/06/13 PHP
对laravel in 查询的使用方法详解
2019/10/09 PHP
javascript动画效果类封装代码
2007/08/28 Javascript
Mootools 1.2教程 定时器和哈希简介
2009/09/15 Javascript
NodeJS Express框架中处理404页面一个方式
2014/05/28 NodeJs
javascript多物体运动实现方法分析
2016/01/08 Javascript
jQuery实现立体式数字动态增加(animate方法)
2016/12/21 Javascript
从零学习node.js之模块规范(一)
2017/02/21 Javascript
深入nodejs中流(stream)的理解
2017/03/27 NodeJs
jQuery实现checkbox即点即改批量删除及中间遇到的坑
2017/11/11 jQuery
vue.js开发实现全局调用的MessageBox组件实例代码
2017/11/22 Javascript
JavaScript基于对象方法实现数组去重及排序操作示例
2018/07/10 Javascript
关于layui时间回显问题的解决方法
2019/09/24 Javascript
你不可不知的Vue.js列表渲染详解
2019/10/01 Javascript
ES6 Iterator遍历器原理,应用场景及相关常用知识拓展详解
2020/02/15 Javascript
JS实现前端路由功能示例【原生路由】
2020/05/29 Javascript
Selenium执行JavaScript脚本的方法示例
2020/12/31 Javascript
[00:44]2016完美“圣”典 风云人物:Mikasa宣传片
2016/12/07 DOTA
python mysqldb连接数据库
2009/03/16 Python
Python操作SQLite数据库的方法详解【导入,创建,游标,增删改查等】
2017/07/11 Python
对Python中range()函数和list的比较
2018/04/19 Python
python 实现在tkinter中动态显示label图片的方法
2019/06/13 Python
python连接mongodb集群方法详解
2020/02/13 Python
Python加速程序运行的方法
2020/07/29 Python
基于Python正确读取资源文件
2020/09/14 Python
英国天然有机美容护肤品:Neal’s Yard Remedies
2018/05/05 全球购物
荷兰家电购物网站:Expert.nl
2020/01/18 全球购物
巴西购物网站:Onofre Agora
2020/06/08 全球购物
师范生自荐信范文
2013/10/06 职场文书
人民教师的自我评价分享
2014/02/21 职场文书
村级个人对照检查材料
2014/08/22 职场文书
2014年大学生党员自我评议
2014/09/22 职场文书
三严三实学习心得体会(精选N篇)
2016/01/05 职场文书
Vue CLI中模式与环境变量的深入详解
2021/05/30 Vue.js
MySQL系列之十 MySQL事务隔离实现并发控制
2021/07/02 MySQL