純粋なJavascriptは入力値の変更をリッスンします


98

入力をリッスンする定数関数を作成して、その入力値が変更されるとすぐに何かがトリガーされる方法はありますか?

純粋なJavaScript、プラグイン、フレームワークを使用していないものを探していますが、HTMLを編集できません。

何か、例えば:

入力の値を変更するとMyObject、この関数が実行されます。

何か助けはありますか?

回答:



34

基本的な例として...

HTML:

<input type="text" name="Thing" value="" />

脚本:

/* event listener */
document.getElementsByName("Thing")[0].addEventListener('change', doThing);

/* function */
function doThing(){
   alert('Horray! Someone wrote "' + this.value + '"!');
}

ここにフィドルがあります:http//jsfiddle.net/Niffler/514gg4tk/


11
入力コンテンツがjavascriptによって変更された場合は機能しません。'input'イベントも 'change'イベントもありません。
imShogun 2017年

9
javascriptによって値が変更されたときに、どのイベントを聞くことができますか?
zero_cool

3
また、他の人が指摘しているように、入力フィールドを終了するまでトリガーされません。今では古い答え、私は知っています。しかし、これらの答えは驚くほど頻繁に現れ、制限については言及していません。
トルク

8

実際には、チェックされた答えは正確に正しいですが、答えはES6形にすることができます:

HTMLInputElementObject.oninput = () => {
  console.log('run'); // Do something
}

または、次のように書くことができます。

HTMLInputElementObject.addEventListener('input', (evt) => {
  console.log('run'); // Do something
});

2

デフォルトの使用法

el.addEventListener('input', function () {
    fn();
});

ただし、JSを介して入力値を手動で変更するときにイベントを発生させたい場合は、カスタムイベント(「myEvent」\「ev」などの任意の名前)を使用する必要があります。フォームの「change」または「input」イベントをリッスンする必要がある場合そして、JSを介して入力値を変更します-カスタムイベントに「change」\「input」という名前を付けることができ、それも機能します。

var event = new Event('input');
el.addEventListener('input', function () { 
  fn();
});
form.addEventListener('input', function () { 
  anotherFn();
});


el.value = 'something';
el.dispatchEvent(input);

https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Creating_and_triggering_events


-7

idの代わりにtitleを使用して要素を識別し、次のようにコードを記述します。

$(document).ready(()=>{

 $("input[title='MyObject']").change(()=>{
        console.log("Field has been changed...")
    })  
});

したがってdownvotes - opは何のjQueryを意味しない「純粋なjavascriptの」道を、要求
revelt
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.