実現したい事
フォームで入力している内容をリアルタイムで監視して入力内容が求めている記載方法に一致しているかを判定したいです。
困っている事
下記の記述で、PCからの入力では特に問題なく動作します。しかし、スマホで試してみると、スマホでフォームにコピペをすると発火しなくて困っています。(コピペした後に一文字空白を入れると発火はします)
解決したい事
スマホでの入力時にコピペをしても下記のaddEventListener
の処理が走るようにしたい。
addEventListener
のkyeup
以外にpaste
も入れればいいのかなと思ったのですがaddEventListener
に複数のイベントリスナーをつける方法が分からなくて困っています。
js
1(function () { 2 'use strict'; 3 var text = document.getElementById("mail"); 4 var other = document.getElementById("label"); 5 6 inputText.addEventListener('keyup', function() { 7 var s = text.value; 8 var check = !!s.match(/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:.[a-zA-Z0-9-]+)*$/); 9 if(!!s && check){ 10 other.textContent = "Good"; 11 }else{ 12 other.textContent = "Bad"; 13 } 14 }, false); 15})();
現状の打開策
下記のようにaddEventListener
を二つ作る事でやりたいことを実現はできます。
しかし、処理内容がほぼ一緒なのでなんとかして1つにまとめる方法について知りたいです。
js
1(function () { 2 'use strict'; 3 var text = document.getElementById("mail"); 4 var other = document.getElementById("label"); 5 6 inputText.addEventListener('keyup', function() { 7 var s = text.value; 8 var check = !!s.match(/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:.[a-zA-Z0-9-]+)*$/); 9 if(!!s && check){ 10 other.textContent = "Good"; 11 }else{ 12 other.textContent = "Bad"; 13 } 14 }, false); 15 16 inputText.addEventListener('paste', function() { 17 var s = text.value; 18 var check = !!s.match(/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:.[a-zA-Z0-9-]+)*$/); 19 if(!!s && check){ 20 other.textContent = "Good"; 21 }else{ 22 other.textContent = "Bad"; 23 } 24 }, false); 25})();
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/09 03:32
2019/11/09 03:35
2019/11/09 03:38