上一主题 下一主题
ScriptCat,新一代的脚本管理器脚本站,与全世界分享你的用户脚本油猴脚本开发指南教程目录
返回列表 发新帖

请问大佬怎么给INPUT元素添加监听事件

[复制链接]
  • TA的每日心情
    无聊
    2023-9-5 15:56
  • 签到天数: 54 天

    [LV.5]常住居民I

    14

    主题

    74

    回帖

    111

    积分

    中级工程师

    积分
    111
    发表于 2023-4-7 15:51:27 | 显示全部楼层 | 阅读模式

    elmGetter.each('#sales-form-swapOrderDetailAddPage', document, swap => { if (swap) { swap.parentElement.insertBefore(triple, swap); swap.addEventListener('keydown', checkPhoneKey); } });

    function checkPhoneKey(key) { return (key >= '0' && key <= '9') || ['+','(',')','-','ArrowLeft','ArrowRight','Delete','Backspace'].includes(key); }

    就是一个input只能输入数字的功能,查看事件侦听器也可以看,但是就是没效果,checkPhoneKey这个函数是复制MDN的,应该没什么问题。

  • TA的每日心情
    开心
    5 小时前
  • 签到天数: 213 天

    [LV.7]常住居民III

    305

    主题

    4189

    回帖

    4056

    积分

    管理员

    积分
    4056

    管理员荣誉开发者油中2周年生态建设者喜迎中秋油中3周年挑战者 lv2

    发表于 2023-4-7 16:07:28 | 显示全部楼层
    提问建议发布悬赏贴:https://bbs.tampermonkey.net.cn/forum-77-1.html
    上不慕古,下不肖俗。为疏为懒,不敢为狂。为拙为愚,不敢为恶。
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-10-28 07:07
  • 签到天数: 193 天

    [LV.7]常住居民III

    712

    主题

    5959

    回帖

    6758

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    6758

    荣誉开发者喜迎中秋油中2周年生态建设者

    发表于 2023-4-7 19:44:23 | 显示全部楼层
    checkPhoneKey只是检测
    没做赋值呀
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.net/a/lihengdao666
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    2023-9-5 15:56
  • 签到天数: 54 天

    [LV.5]常住居民I

    14

    主题

    74

    回帖

    111

    积分

    中级工程师

    积分
    111
    发表于 2023-4-7 20:38:20 | 显示全部楼层
    王一之 发表于 2023-4-7 16:07
    提问建议发布悬赏贴:https://bbs.tampermonkey.net.cn/forum-77-1.html

    好的,大佬
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2022-3-8 11:41
  • 签到天数: 2 天

    [LV.1]初来乍到

    22

    主题

    881

    回帖

    1379

    积分

    荣誉开发者

    积分
    1379

    荣誉开发者卓越贡献油中2周年生态建设者油中3周年挑战者 lv2

    发表于 2023-4-7 20:40:57 | 显示全部楼层
    首先参数不对,监听函数的参数是事件,key是他的一个属性:
    1. function checkPhoneKey(e) {
    2.     console.log(e.key);
    3. }
    复制代码

    其次通过return false阻止默认行为仅对on类型事件有效,对于addEventListener绑定的事件,返回值是没有意义的,应该使用preventDefault:
    1. function checkPhoneKey(e) {
    2.     if (e.key == '0') {
    3.         e.preventDefault();
    4.     }
    5. }
    复制代码

    最后对于input元素,指定type类型是更简单的做法,无需绑定事件:
    1. swap.type = 'number';
    复制代码
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    2023-9-5 15:56
  • 签到天数: 54 天

    [LV.5]常住居民I

    14

    主题

    74

    回帖

    111

    积分

    中级工程师

    积分
    111
    发表于 2023-4-7 20:41:40 | 显示全部楼层
    李恒道 发表于 2023-4-7 19:44
    checkPhoneKey只是检测
    没做赋值呀

    这个函数返回 false 会阻止事件的默认行为,网站是这样介绍的
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    2023-9-5 15:56
  • 签到天数: 54 天

    [LV.5]常住居民I

    14

    主题

    74

    回帖

    111

    积分

    中级工程师

    积分
    111
    发表于 2023-4-7 22:35:40 | 显示全部楼层
    cxxjackie 发表于 2023-4-7 20:40
    首先参数不对,监听函数的参数是事件,key是他的一个属性:

    其次通过return false阻止默认行为仅对on类型 ...

    感谢大佬解惑,感谢感谢
    回复

    使用道具 举报

    发表回复

    本版积分规则

    快速回复 返回顶部 返回列表