React渲染输入的触发器更改事件(类型=范围)

时间:2018-04-11 19:44:59

标签: javascript jquery reactjs dom dom-events

“反应”:“^ 15.4.2”

我无法从jquery为使用React呈现的输入触发更改事件。 我需要这样做进行端到端的测试。

这是一个完整展示的沙箱:https://codesandbox.io/s/pp1k1kq3om 已经加载了jquery。

如果你在控制台中运行:$('#reactSlider')。val(50).change(),你会注意到没有调用更改处理程序。

在上面的沙箱中还有一个纯html滑块用于比较,一个按预期工作(调用更改函数)。

还试图发送像这样的新事件:

inv=addToInventory(inv, dragonLoot) #inv=None since addToInventory returns nothing
displayInventory(inv) #passing it None
    for k, v in inventory.items(): #None.items() is obviously invalid, creates error

以上也不起作用(并且可以在纯html滑块上工作)。

var event = new Event('change')
var target = $('#reactSlider')[0];
target.dispatchEvent(event);

1 个答案:

答案 0 :(得分:0)

好的,所以我发现了一种解决方法。 看起来onInput事件可以被触发就好了。在输入类型='范围' "输入"事件的触发与"更改"相同。是的,我能够切换它。

解决方法是:使用onInput而不是onChange并像这样触发它:

function triggerChange(selector,evt) {
    let ev = new Event(evt, { bubbles: true });
        let el = $(selector)[0]

        el.dispatchEvent(ev);
  };
triggerChange('#reactSlider','input');