Javascript 更改输入值后从脚本触发onKeyUp

Javascript 更改输入值后从脚本触发onKeyUp,javascript,Javascript,我有几个输入字段,它们使用onKeyUp=“script”在输入内容时返回数据 作为一种快捷方式,当从另一个位置输入数据并触发脚本时,我希望能够向其中一个字段添加值 我可以使用document.getElementById(“myID”).value=MyValue向输入框添加特定值,或.addEventListener()以查看另一个输入字段。 这部分很好用 但是,我无法触发任何等效于onKeyUp的事件,这将在以下情况下发生: 1.当输入字段处于焦点时,按下/释放一个键。 2.在脚本添加值后

我有几个输入字段,它们使用
onKeyUp=“script”
在输入内容时返回数据

作为一种快捷方式,当从另一个位置输入数据并触发脚本时,我希望能够向其中一个字段添加值

我可以使用
document.getElementById(“myID”).value=MyValue
向输入框添加特定值,或
.addEventListener()
以查看另一个输入字段。 这部分很好用

但是,我无法触发任何等效于
onKeyUp
的事件,这将在以下情况下发生: 1.当输入字段处于焦点时,按下/释放一个键。 2.在脚本添加值后,可以聚焦输入并释放一个键。 3.脚本添加值后,通过[TAB]输入输入字段

添加
.keyup()
.keypress()无效。
我已经能够使用
.focus()
聚焦,然后更改输入,但这与按[TAB]的效果不同

即使数据不是手动输入的,如何触发此字段的
onKeyUp

其他信息

这部分工作

<input type="text" id="box1" onKeyUp="script1();">
<div id="result1" "> (script places result here) </div>


以编程方式在中触发
keyup

JAVASCRIPT

  • 对元素调用
    onkeyup()
  • 创建一个新的
    keyup
    事件,并使用元素分派它注意:此处的源不支持IE。请参阅以获取跨浏览器支持。另外,
    createEvent
    也不推荐使用(仅供参考)
  • JQUERY

  • $(“#elem”).keyup()
  • $(“#elem”).trigger('keyup')
  • 更改事件仅在输入模糊时触发

    另外,您应该在
    控制台中获得
    未捕获的TypeError:element.keyup不是函数
    错误

    var elem=document.getElementById(“数据”);
    函数triggerKeyUpEvent()
    {
    var e=document.createEvent('HTMLEvents');
    e、 initEvent(“keyup”、false、true);
    要素调度事件(e);
    }
    函数执行()
    {
    控制台日志(“KeyUp”);
    }
    函数add()
    {
    elem.value=String.fromCharCode(Math.random().toFixed(2)*100)。重复(5);
    元素onkeyup();
    triggerKeyUpEvent();
    }
    
    
    添加随机数据
    以修复JSFIDLE,并更新以下代码:

    var elem = document.getElementById("sim1");
    
    function triggerKeyUpEvent() {
      var e = document.createEvent('HTMLEvents');
      e.initEvent("keyup",false,true);
      elem.dispatchEvent(e);
    }
    
    function add() {
      var sim1=document.getElementById("sim1").value;
      document.getElementById("box1").value = sim1;
      elem.onkeyup();
      triggerKeyUpEvent()
    }
    
    将行
    elem.dispatchEvent(e)
    替换为
    box1.dispatchEvent(e)

    以及带有
    box1.onkeyup()的行
    elem.onkeyup()

    最后,您似乎不需要调用
    triggerKeyUpEvent
    ,因为当我删除它时,它仍然有效


    提供您迄今为止所尝试过的:d您能否给我们一些明确定义的测试用例,比如写一些html,解释调用哪些函数时希望发生什么。附加信息是否回答了您的问题?@chbchb55我添加了一个小提琴,其中包含一个特定的示例以及答案1中不起作用的代码。有什么想法吗?您的演示程序不起作用,因为您正在执行
    elem.onkeyup()
    而不是
    box1.keyup()
    ,这是您应该执行的操作,而且有效。我尚未成功实现此解决方案。我可以看到日志显示KeyUp,但在值更改的输入
    id=“box1”
    上似乎没有这样做。将这些附加函数添加到脚本后,结果仍然相同。
    被修改,字段被聚焦,但直到我按下并释放一个键,脚本才被触发。
    更改
    事件将在输入被聚焦出来之前不起作用
    elem.blur()
    不会触发该焦点。只有手动单击才能解除输入焦点。要实现更改事件,
    setInterval
    可用于以100ms的间隔验证元素的值
    但脚本在我按下并释放一个键之前不会被触发。
    这并不意味着聚焦后需要按下并释放一个键。这是被解雇的
    keyup
    事件。我不确定我们中的哪一个被弄糊涂了。触发一个
    onKeyUp
    是我唯一想做的事情。我不需要做任何其他事情(例如更改
    焦点
    ),除非触发
    onKeyUp
    。如果需要
    elem.blur
    ,但只有在“手动点击可能会取消输入焦点”之后才能使用,那么这将破坏整个点。我理解“这并不意味着聚焦后你需要按下并释放一个键”。我的意思是,激活原始脚本仍然需要手动按键,因为函数没有这样做。那么实际上您想在
    更改
    处理程序中触发
    键控
    ?如果是这样的话,那就是你用错了。它的
    onkeyup
    不是
    keyup
    。Keyup是元素的
    未定义的
    属性。错误将在运行时记录。如果不是这样的话,请原谅我,看起来我没能把你说清楚。是的,这是正确的。原始输入字段如下所示:
    如果我通过其他脚本更改此字段的值,我还需要触发
    onKeyUp
    函数,以便所有内容都自动计算。目前,我必须手动按下一个键,它才能工作。是的,似乎大部分代码都是不必要的。仅添加
    document.getElementById(“box1”).onkeyup()
    正是我所需要的——我一定是在问问题之前试过的时候错过了
    ()
    。非常感谢。
    <script type='text/javascript'>
      window.onload = function () {
        document.getElementsByName("box2")[0].addEventListener('change', TestScript2);
        function TestScript2(){
          var test2=document.getElementById("box2").value;
          document.getElementById("box1").value = test2;
      }}
    </script>
    
    var elem = document.getElementById("sim1");
    
    function triggerKeyUpEvent() {
      var e = document.createEvent('HTMLEvents');
      e.initEvent("keyup",false,true);
      elem.dispatchEvent(e);
    }
    
    function add() {
      var sim1=document.getElementById("sim1").value;
      document.getElementById("box1").value = sim1;
      elem.onkeyup();
      triggerKeyUpEvent()
    }