使用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 相关文章推荐
js实现动态加载脚本的方法实例汇总
Nov 02 Javascript
继续学习javascript闭包
Dec 03 Javascript
全面理解闭包机制
Jul 11 Javascript
AngularJS 依赖注入详解和简单实例
Jul 28 Javascript
JS数组排序方法实例分析
Dec 16 Javascript
Vue实现点击时间获取时间段查询功能
Aug 21 Javascript
JS简单判断是否在微信浏览器打开的方法示例
Jan 08 Javascript
使用easyui从servlet传递json数据到前端页面的两种方法
Sep 05 Javascript
js实现随机点名程序
Sep 17 Javascript
在vue-cli中引入lodash.js并使用详解
Nov 13 Javascript
vue请求数据的三种方式
Mar 04 Javascript
jQuery实现点击滚动到指定元素上的方法分析
Mar 19 jQuery
实例详解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 OPCode缓存 APC详细介绍
2010/10/12 PHP
Javascript与PHP验证用户输入URL地址是否正确
2014/10/09 PHP
Yii框架在页面输出执行sql语句以方便调试的实现方法
2014/12/24 PHP
PHP生成plist数据的方法
2015/06/16 PHP
利用js跨页面保存变量做菜单的方法
2008/01/17 Javascript
Jquery插件之多图片异步上传
2010/10/20 Javascript
尝试在让script的type属性等于text/html
2013/01/15 Javascript
js和php如何获取当前url的内容
2013/09/22 Javascript
如何从jQuery的ajax请求中删除X-Requested-With
2013/12/11 Javascript
javascript制作loading动画效果 loading效果
2014/01/14 Javascript
js触发select onchange事件的小技巧
2014/08/05 Javascript
js和jquery中循环的退出和继续下一个循环
2014/09/03 Javascript
JS获取元素多层嵌套思路详解
2016/05/16 Javascript
Angularjs在初始化未完毕时出现闪烁问题的解决方法分析
2016/08/05 Javascript
结合Vue控制字符和字节的显示个数的示例
2018/05/17 Javascript
在Vue项目中引入JQuery-ui插件的讲解
2019/01/27 jQuery
vue组件开发props验证的实现
2019/02/12 Javascript
Vue项目如何引入bootstrap、elementUI、echarts
2020/11/26 Vue.js
[47:42]完美世界DOTA2联赛PWL S2 GXR vs Ink 第一场 11.19
2020/11/20 DOTA
python 布尔操作实现代码
2013/03/23 Python
Python的高阶函数用法实例分析
2019/04/11 Python
python反编译教程之2048小游戏实例
2021/03/03 Python
CSS3 text-shadow实现文字阴影效果
2016/02/24 HTML / CSS
解析HTML5的存储功能和web SQL的相关操作方法
2016/02/19 HTML / CSS
英国曼彻斯特宠物用品品牌:Bunty Pet Products
2019/07/27 全球购物
德国婴儿服装和婴儿用品购买网站:Baby Sweets
2019/12/08 全球购物
活动总结报告怎么写
2014/07/03 职场文书
社区党建工作汇报材料
2014/10/27 职场文书
领导干部群众路线对照检查材料
2014/11/05 职场文书
2016年党建工作简报
2015/11/26 职场文书
2019假期福利管理制度!
2019/07/15 职场文书
CSS完成视差滚动效果
2021/04/27 HTML / CSS
SpringBoot连接MySQL获取数据写后端接口的操作方法
2021/11/02 MySQL
Go 中的空白标识符下划线
2022/03/25 Golang
Tomcat starup.bat 脚本实现开机自启动
2022/04/20 Servers
React如何使用axios请求数据并把数据渲染到组件
2022/08/05 Javascript