zoukankan      html  css  js  c++  java
  • js模拟键盘给input框输入值,并触发回车事件

    参考:https://segmentfault.com/a/1190000020892430

    使用js模拟用户输入数据,改变input的value值,在提交的时候无效果,在一番寻找下,原来就因为没有触发绑定的input事件,使用原生js代码完美解决

    let t=document.getElementsByClassName('c_l_area c_a_n')[0];
    let evt = document.createEvent('HTMLEvents');
    evt.initEvent('input', true, true);
    t.value='setValue';
    t.dispatchEvent(evt)
    

    仅模拟回车事件,参考:https://juejin.im/post/6844904128305430541

    未生效方法:https://blog.csdn.net/sbin456/article/details/78901400

    参考:

    var evt = $.Event('keydown', {keyCode: 13});
    $(document).trigger(evt);

    正确做法

    // 设置发送信息
    var inpEle = window.frames['chat'].document.getElementById('_MEIQIA_INPUT')
    // inpEle.value = '测试信息'  //仅仅是模拟回车,则不需要这样,这样给input框设置值也是不生效的,正确给input设置值的方式参考上面的
    // 模拟回车
    var event = document.createEvent('Event')
    event.initEvent('keydown', true, false)   //注意这块触发的是keydown事件,在awx的ui源码中bind监控的是keypress事件,所以这块要改成keypress
    event = Object.assign(event, {
      ctrlKey: false,
      metaKey: false,
      altKey: false,
      which: 13,
      keyCode: 13,
      key: 'Enter',
      code: 'Enter'
    })
    inpEle.focus()
    inpEle.dispatchEvent(event)
    

      

    https://www.cnblogs.com/gisblogs/p/5821665.html 这篇文章验证了也未生效

     

    做有积累的事~~
  • 相关阅读:
    内存相关函数
    Redis入门
    libevent(九)evhttp
    Python基础00 教程
    Python之re模块
    Makefile入门
    cmake安装jsoncpp
    awk调用date命令
    SQLite使用(二)
    SQLite使用(一)
  • 原文地址:https://www.cnblogs.com/robinunix/p/13685771.html
Copyright © 2011-2022 走看看