简体   繁体   English

在vanilla JavaScript中使用jQuery更改方法?

[英]jQuery change method in vanilla JavaScript?

I wrote a little piece of jQuery code below that uses the change method. 我在下面写了一小段使用change方法的jQuery代码。 I just found out jQuery is no longer being used in the project so I need to re-write the change method in Vanilla JS. 我刚刚发现jQuery不再在项目中使用,所以我需要在Vanilla JS中重新编写change方法。 Just looking for some assistance on how I can do that. 只是寻求一些帮助我如何做到这一点。 Here is the code, it pulls the value of one input and enters it into another. 这是代码,它拉取一个输入的值并将其输入另一个输入。

(function(){

  $('#Email').change(function() {
    $('#UserName').val($(this).val());
  });

})();

If you don't need to support old IEs, you can use querySelector + addEventListener : 如果您不需要支持旧的IE,可以使用querySelector + addEventListener

document.querySelector('#Email').addEventListener('change',function(){
    document.querySelector('#UserName').value = this.value;
});

Visually it looks just like it would with jQuery's .on('change', fn) (which is what .change() calls), just more verbose. 在视觉上它看起来就像jQuery的.on('change', fn) (这是.change()调用),只是更详细。

Browsers vary on how events should be attached. 浏览器因事件的附加方式而异。 You'd probably want to start with a little helper method: 您可能想要从一个小帮助方法开始:

function addEventHandler(elem, eventType, handler) {
    if (elem.addEventListener)
        elem.addEventListener (eventType, handler, false);
    else if (elem.attachEvent)
        elem.attachEvent ('on' + eventType, handler); 
}

For the following sample, I'm going to assume that your IIFE should have really been a DOM-ready event. 对于以下示例,我将假设您的IIFE应该确实是一个DOM-ready事件。 The IIFE in your code doesn't seem to really serve any purpose. 代码中的IIFE似乎没有任何用途。 So... 所以...

There are two events from your code, the DOM-ready event ("DOMContentLoaded") and the select element's change event ("onchange"). 您的代码中有两个事件,即DOM-ready事件(“DOMContentLoaded”)和select元素的更改事件(“onchange”)。 Taking advantage of the above helper, your jQuery syntax translates to: 利用上面的帮助程序,您的jQuery语法转换为:

addEventHandler(document, 'DOMContentLoaded', function() {
    addEventHandler(document.getElementById('Email'), 'change', function() {
        document.getElementById('UserName').value = this.value;
    });
});

Here's a demo: 这是一个演示:

  function addEventHandler(elem, eventType, handler) { if (elem.addEventListener) elem.addEventListener (eventType, handler, false); else if (elem.attachEvent) elem.attachEvent ('on' + eventType, handler); } addEventHandler(document, 'DOMContentLoaded', function() { addEventHandler(document.getElementById('Email'), 'change', function() { document.getElementById('UserName').value = this.value; }); }); 
 <select id="Email"> <option value=""></option> <option value="Test 1">Test 1</option> <option value="Test 2">Test 2</option> </select> <input id="UserName" type="text" /> 

There is the change event : change事件

<select id="select"></select>

JS: JS:

document.getElementById("select").onchange = function() { console.log("Changed!"); }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM