扫码关注官方订阅号
激活 input 域的 select 事件
文本框后面会添加“文本被选中!文本被选中!文本被选中!”,为什么会触发多次?
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
其实就是个冒泡问题
$("input").select(function(e){ $("input").after("文本被选中!"); return false; }); $("button").click(function(){ $("input").trigger("select"); return false; });
当你使用鼠标取选择文本框中的文字的时候,当有文字被选中,就会触发一次,第1次选择一个文字,触发,选中2个又被触发...而当你非手工触发selected事件是,会将当前文本全部选中,只触发一次,从0到全部
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> <script src="../script/jquery-2.1.3.min.js"></script> <script type="text/javascript"> $(document).ready(function(){ $("input").select(function(){ $("input").after("文本被选中!"); }); $("button").click(function(){ $("input").trigger("select"); }); document.getElementById("FirstName").addEventListener('select', function() { console.log('Selection changed!'); }, false); }); </script> </head> <body> <input type="text" id="FirstName" name="FirstName" value="Hello World" /> <br /> <button>激活 input 域的 select 事件</button> </body> </html>
用triggerHandler
//这是 trigger 对select的一种特性: // 1: 当你click的时候,会立即执行 $("input").after("文本被选中!"),此时并没有选中文字; // 你可以这样测试: 当点击的时候,文字并没有选中,但是执行了$("input").after("文本被选中!"); $(document).ready(function(){ $("input").select(function(){ $("input").after("文本被选中!"); return false; }); $("button").click(function(){ $("input").trigger("select"); }); }); // 2: 然后再是选中文字,然后以下代码执行; (注意:这是trigger发生的动作); $("input").select(function(){ $("input").after("文本被选中!"); }); // 3: 最后以下这段代码检测到文字被选中,然后执行; $("input").select(function(){ $("input").after("文本被选中!"); });
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
其实就是个冒泡问题
当你使用鼠标取选择文本框中的文字的时候,当有文字被选中,就会触发一次,第1次选择一个文字,触发,选中2个又被触发...
而当你非手工触发selected事件是,会将当前文本全部选中,只触发一次,从0到全部