js 模拟回车 模拟键盘,给input框输入值 触发回车事件

这篇具有很好参考价值的文章主要介绍了js 模拟回车 模拟键盘,给input框输入值 触发回车事件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  1. 使用js模拟按键输入的踩坑记录
    https://zhuanlan.zhihu.com/p/356661173

a)

				  let element = document.querySelector('#search') 	// input输入框
				  element.value = '文本内容'  						// 输入的内容
				  var event = new Event('input', {
				      'bubbles': true,
				      'cancelable': true
				  })
				  element.dispatchEvent(event)

b)

				$('.simple-input').val('abc').trigger('change')
				let elem = window.document.getElementsByClassName('simple-input')  // input输入框
				window.inputValue = function (dom, st) {
				    var evt = new InputEvent('input', {
				        inputType: 'insertText',
				        data: st, // 输入的内容
				        dataTransfer: null,
				        isComposing: false
				    })
				    dom.value = st
				    dom.dispatchEvent(evt)
				}
				window.inputValue(elem, '123') 

c)

			   var element_input = window.document.querySelector('input') // input输入框
			   var _templMethod = element_input._valueTracker.getValue
			   var _templMethod = element_input.getValue
			   element_input._valueTracker.getValue = () => ''
			   element_input.value = '123' // 输入的内容
			   var event = new InputEvent('input', {
			       'bubbles': true,
			       'cancelable': true,
			   })
			   element_input.dispatchEvent(event)
			   element_input._valueTracker.getValue = _templMethod
  1. 仅模拟回车事件
    https://juejin.im/post/6844904128305430541

    键盘键值对照表:
    https://blog.csdn.net/geekswg/article/details/120246209

    原文参考:
    http://wjhsh.net/robinunix-p-13685771.html
    https://www.cnblogs.com/robinunix/p/13685771.html

    浏览器兼容:
    https://www.bbsmax.com/A/KE5QpEnjJL/

    官方文档:
    https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/initKeyEvent

    正确方法:
    https://www.cnblogs.com/gisblogs/p/5821665.html

a)

				let keyboard = document.querySelector('#search') // 元素
                let ke = new KeyboardEvent('keypress', {
                    bubbles: true, cancelable: true, keyCode: 13
                })
                keyboard.dispatchEvent(ke)

b)

				let keyboardEvent = new KeyboardEvent('keydown', {
                    keyCode: 13, code: 'KeyEnter', key: 'Enter'
                })
                let initMethod = typeof keyboardEvent.initKeyboardEvent !== 'undefined' ? 'initKeyboardEvent' : 'initKeyEvent'
                keyboardEvent[initMethod]('keypress', true, true, window, "Enter", 0, false, false, false, false)
                document.getElementById('search').dispatchEvent(keyboardEvent) 

c)

				var inpEle = document.querySelector('#search')
                var event = document.createEvent('Event') 

                //注意这块触发的是keydown事件,在awx的ui源码中bind监控的是keypress事件,所以这块要改成keypress
                event.initEvent('keypress', true, false)
                event = Object.assign(event, {     // 模拟回车
                    ctrlKey: false,
                    metaKey: false,
                    altKey: false,
                    which: 13,
                    keyCode: 13,
                    key: 'Enter',
                    code: 'Enter'
                })
                inpEle.focus()
                inpEle.dispatchEvent(event)

d)

            function fireKeyEvent(el, evtType, keyCode) {
                var evtObj
                if (document.createEvent) {
                    evtObj = document.createEvent('UIEvents')
                    evtObj.initUIEvent(evtType, true, true, window, 1)

                    delete evtObj.keyCode;
                    if (typeof evtObj.keyCode === "undefined") {//为了模拟keycode
                        Object.defineProperty(evtObj, "keyCode", { value: keyCode })
                    } else {
                        evtObj.key = String.fromCharCode(keyCode)
                    }

                    if (typeof evtObj.ctrlKey === 'undefined') {//为了模拟ctrl键
                        Object.defineProperty(evtObj, "ctrlKey", { value: true })
                    } else {
                        evtObj.ctrlKey = true
                    }
                    console.log('evtObj:', evtObj)
                    el.dispatchEvent(evtObj)
                }
            }

			fireKeyEvent(document.getElementById('search'), "keypress", 13) // 调用

e)文章来源地址https://www.toymoban.com/news/detail-515229.html

            function fireKeyEvent2(el, evtType, keyCode) {
                var doc = el.ownerDocument
                var win = doc.defaultView || doc.parentWindow, evtObj
                console.log('doc:', doc)
                console.log('win:', win)

                if (doc.createEvent) {
                    if (win.KeyEvent) {
                        evtObj = doc.createEvent('KeyEvents')
                        evtObj.initKeyEvent(evtType, true, true, win, false, false, false, false, keyCode, 0)
                    } else {
                        evtObj = doc.createEvent('UIEvents')
                        Object.defineProperty(evtObj, 'keyCode', {
                            get: function () { return this.keyCodeVal }
                        })
                        Object.defineProperty(evtObj, 'which', {
                            get: function () { return this.keyCodeVal }
                        })

                        evtObj.initUIEvent(evtType, true, true, win, 1)
                        evtObj.keyCodeVal = keyCode

                        let key = evtObj.keyCode
                        let which = evtObj.which
                        let t = "keyCode " + key + " 和 (" + which + ") "
                        if (evtObj.keyCode !== keyCode) {
                            console.log(t + "不匹配")
                        } else {
                            console.log(t + "匹配")
                        }
                    }
                    el.dispatchEvent(evtObj)

                } else if (doc.createEventObject) {                    
                    evtObj = doc.createEventObject()
                    evtObj.keyCode = keyCode;
                    el.fireEvent('on' + evtType, evtObj)
                }
            }
            
			fireKeyEvent2(document.getElementById('search'), "keypress", 13) // 调用

到了这里,关于js 模拟回车 模拟键盘,给input框输入值 触发回车事件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如何给 el-input 添加键盘回车事件

    查找 Element UI 的 input输入框组件(el-input组件),都没有发现可以给输入框添加的回车键监听事件,因为Element UI对其做了进一步封装,想要直接添加 @keydown(或者@keyup.enter)是无效的。 要想在el-input中实现回车键监听事件,需要在@keyup.enter后面加上.native,即 那么 .native 是如

    2024年02月16日
    浏览(60)
  • vue3和ts的el-input的键盘回车绑定事件

    el-input框绑定键盘回车搜索事件 加上@keyup.enter.native=\\\"search\\\" 然后   第二种方法:作用在input元素身上 在html中 然后

    2024年02月04日
    浏览(46)
  • ASP.NET WebForm中在TextBox输入框回车时会触发其他事件,如何处理?

    在ASP.NET WebForm中,在页面中按键盘上的回车键,会自动触发某些事件,但是这并不是我们想要的效果,我们可以设置将其取消,那如何处理呢? 前台代码:   后台在Page_Load中设置代码:  代码示例:     在ASP.NET WebForm中,在页面中按键盘上的回车键,需要自定义设置触发某

    2024年02月15日
    浏览(33)
  • vue element-ui el-input输入框绑定@keyup.enter回车事件无效

    由于element-ui把input进行了封装,input外面是多一层div的。 在element-ui里有很多因为自身封装了几层标签导致事件和样式无法按想要的效果呈现,遇到后可以在网页中查看dom结构分析原因。 所以对于el-input,使用 @keyup.enter是无效的,需要加上 .native 限制符 .native修饰符的作用:

    2024年02月16日
    浏览(55)
  • js监听input输入事件及使用防抖封装函数处理的实现

    循序渐进: 1.实现input框的输入监听事件: 2.防抖函数 防抖函数的目的:为了限制函数的执行频率而出现,优化解决函数触发频率过高导致延迟及假死卡顿等bug的出现。大多用在查询和提交功能上。 设置时间内多次点击或者输入只会执行最后一次点击或者输入; 代码: 3.i

    2024年02月12日
    浏览(41)
  • Vue 中使用回车键触发事件的方法详解

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 在 Vue 前端开发中,我们经常需要在输入框或表单中使用回车键触发某个特定的事件,例如提交表单或搜索数据等

    2024年02月11日
    浏览(48)
  • js触发点击事件(模拟自动点击事件)

    进入页面触发点击事件 js 派发事件 Event.initEvent()已弃用 添加链接描述

    2024年02月16日
    浏览(54)
  • Vue-给element-ui的input输入框绑定键盘事件不生效

    在vue中使用elementui的input组件绑定回车事件生效。 el-input @keyup.enter=\\\'方法\\\' /el-input 在vue中如果直接使用 v-on或@ 监听事件的话, 监听的是 由组件中使用$emit自定义的事件 , 例如下面代码。 使用 .native 修饰符, 告诉vue这是触发的 原生事件 不是 自定义事件 , 比如下面这个监听 ele

    2024年02月13日
    浏览(62)
  • elementUI中input回车触发页面刷新问题和解决方法

    今天在做项目的的时候发现创建的el-form表单内单个el-input框输入值后点回车会导致页面刷新的问题,于是好奇心驱使下去查了vue中的form表单内的单input框也会跳转页面也就是页面刷新的问题。查了下 :::tip W3C 标准中有如下规定: When there is only one single-line text input field in a fo

    2024年02月08日
    浏览(37)
  • Element UI 中el-input 框回车触发页面刷新问题及解决

    问题描述 当el-input 获取焦点后按到回车按钮会刷新当前页面 问题解决 在el-form标签增加表单事件@submit.native.prevent,防止搜索框回车键刷新整个页面

    2024年02月09日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包