2017-10-23 3 views
1

コードはattachment手動で入力値を変更しても入力イベントを発行できないのはなぜですか?

で定義されています。入力フィールドと入力イベントがフィールドに関連付けられている状況があります。

私はこのフィールドからの書き込みや削除などの際に、適切にイベントが送信され、このイベントに反応することができます。

input.addEventListener('input',() => { 
    changeCounterValue(charsCounter, input); 
}); 

しかし、私は入力をフォームに送信すると入力の値をリセットしますが、実際には入力イベントは発生しません。

document.querySelector('form').addEventListener('submit', (e) => { 
    e.preventDefault(); 
    input.value = ""; 
    // I don't want to integrate here with charsCounter module, to reset his value to 0 
}); 

私がフォームを送信する際@Temani Afifが述べたように、この瞬間に、charsCounterは、0

+1

変更値は、「受賞しましたそれはイベントではないので、イベントをトリガーしません。イベントはDOM要素とユーザーのやりとりとの対話に相対的です –

+1

代わりに独自のイベントを定義して、それをトリガーすることができます –

+0

カウンターをリセットしたくない場合や何か..? –

答えて

0

ネイティブにリセットされませんので、私の目標は、charsCounterモジュールにintegreatingせずに値charsCounterをリセットすることですコメントでは、inputイベントはJavascriptからの変更によってトリガーされません。代わりに、あなたはあなたの価値を再設定した後、あなた自身でそれを発送しなければなりません。このように要素を作成します。

var inputEvent = new Event('input', { 
    view: window, 
    bubbles: true, 
    cancelable: true 
}); 

そして、このようなあなたのsubmitのEventListenerでそれをトリガー:さらなる情報については

document.querySelector('form').addEventListener('submit', (e) => { 
    e.preventDefault(); 
    input.value = ""; 
    // I don't want to integrate here with charsCounter module, to reset his value to 0 
    input.dispatchEvent(inputEvent); 
}); 

JSFiddle

、JSと訪問MDN - Creating and triggering Events

関連する問題